Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串解析为.NET中的项目列表_.net_String_Parsing - Fatal编程技术网

将字符串解析为.NET中的项目列表

将字符串解析为.NET中的项目列表,.net,string,parsing,.net,String,Parsing,将以下字符串解析为整数值列表的最快方法(执行速度最快)是什么? 我需要在##标记之间指定的值 上述字符串应创建一个整数列表: 一, 二, 三, 四, 五, 使用string.Split将值拆分为字符串数组,然后使用int.parse解析整数或double.parse解析浮点值 如果这是您的输入,您可能还必须使用要删除的字符对字符串调用Trim,例如“*”、“/”、“+”使用string.Split将值拆分为字符串数组,然后用int.parse解析整数,或用double.parse解析浮点值 如

将以下字符串解析为整数值列表的最快方法(执行速度最快)是什么? 我需要在##标记之间指定的值

上述字符串应创建一个整数列表:

  • 一,
  • 二,
  • 三,
  • 四,
  • 五,

使用
string.Split
将值拆分为字符串数组,然后使用
int.parse
解析整数或
double.parse
解析浮点值


如果这是您的输入,您可能还必须使用要删除的字符对字符串调用
Trim
,例如
“*”、“/”、“+”

使用
string.Split
将值拆分为字符串数组,然后用
int.parse
解析整数,或用
double.parse
解析浮点值

如果这是您的输入,您可能还必须使用要删除的字符对字符串调用
Trim
,例如
“*”、“/”、“+”

可能是这样吗

var array = Regex.Matches("#1#+#2#+#3#*1.23+#4#/2+#5#", @"(?<=#)\d+(?=#)")
                  .Cast<Match>()
                  .Select(x => x.Value)
                  .ToArray();
var array=Regex.Matches(“#1#+#2#+#3#*1.23+#4#/2+#5#“,@”(?可能是这样吗

var array = Regex.Matches("#1#+#2#+#3#*1.23+#4#/2+#5#", @"(?<=#)\d+(?=#)")
                  .Cast<Match>()
                  .Select(x => x.Value)
                  .ToArray();

var array=Regex.Matches(“#1#+#2#+#3#*1.23+#4#/2+#5#“,@”(?使用正则表达式

var input = "#1#+#2#+#3#*1.23+#4#/2+#5#";

var matches = Regex.Matches(input, "#(.*?)#")
                   .Cast<Match>()
                   .Select(m => m.Groups[1].Value)
                   .ToList();

matches.ForEach(Console.WriteLine);
var-input=“#1#+#2#+#3#*1.23+#4#/2+#5#”;
var matches=Regex.matches(输入“#(.*?)#”)
.Cast()
.Select(m=>m.Groups[1]。值)
.ToList();
matches.ForEach(Console.WriteLine);

小提琴:使用正则表达式

var input = "#1#+#2#+#3#*1.23+#4#/2+#5#";

var matches = Regex.Matches(input, "#(.*?)#")
                   .Cast<Match>()
                   .Select(m => m.Groups[1].Value)
                   .ToList();

matches.ForEach(Console.WriteLine);
var-input=“#1#+#2#+#3#*1.23+#4#/2+#5#”;
var matches=Regex.matches(输入“#(.*?)#”)
.Cast()
.Select(m=>m.Groups[1]。值)
.ToList();
matches.ForEach(Console.WriteLine);

Fiddle:

最具可读性的解决方案是

  string text = "#1#+#2#+#3#*1.23+#4#/2+#5#";
  foreach (string fragment in text.Split('#'))
  {
    int number;
    if (int.TryParse(fragment, NumberStyles.Integer, CultureInfo.InvariantCulture, out number))
    {
       Console.WriteLine(number);
    }
 }

也许可以找到一个更快的实现——但如果您不必解析数百万个数字,我更喜欢可读的解决方案。

最可读的解决方案是

  string text = "#1#+#2#+#3#*1.23+#4#/2+#5#";
  foreach (string fragment in text.Split('#'))
  {
    int number;
    if (int.TryParse(fragment, NumberStyles.Integer, CultureInfo.InvariantCulture, out number))
    {
       Console.WriteLine(number);
    }
 }

也许可以找到一个更快的实现-但如果您不必解析数百万个数字,我会选择一个可读的解决方案。

@Serge appTranslator只需检查演示链接中的输出。@Downvoter是否需要评论?我还添加了一个指向工作演示的链接!哈,您在我键入时修复了它;-)FWIW,我不是downvoter。@Serge appTranslator只需检查演示链接中的输出。@downvoter是否需要评论?我还添加了一个指向工作演示的链接!哈,你在我键入时修复了它;-)FWIW,我不是downvoter。最快?编码最快还是执行最快?除非你有非常具体的要求,否则我个人会选择最可读的解决方案。例如:String.Split()可以说比regex快,但regex解决方案可读性更高(在我看来也是可靠的,但这也是有争议的)。只需使用
split
函数拆分字符串。但要删除特殊字符或仅获取数值,可以使用regex.faster?编写代码最快还是执行最快?除非您有非常具体的要求,否则我个人会选择可读性最高的解决方案。例如:string.split()可能比正则表达式更快,但正则表达式解决方案更具可读性(在我看来也是可靠的,但这也是有争议的)。只需使用
split
函数拆分字符串。但要删除特殊字符或仅获取数值,可以使用正则表达式。