将字符串解析为.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
函数拆分字符串。但要删除特殊字符或仅获取数值,可以使用正则表达式。