我有一个这种格式的字符串:“ABC_123 _”
我想最后得到整数变量,它只是字符串的数字部分。在C#中实现这一目标的最有效方法是什么?
答案 0 :(得分:8)
这应该足够有效。如果它不是最有效的,除非剖析告诉你它是你的应用的瓶颈,否则不要出汗:
string s = "ABC_123_";
int i = Int32.Parse(s.Split('_')[1]);
如果没有关于您的问题的更多信息,我就会这样做。
答案 1 :(得分:3)
强制RegEx示例以匹配字符串中的所有数字:
int num = Convert.ToInt32(Regex.Match("ABC_123_", @"\d+").Value);
更改以确保它被_:
包围int num = Convert.ToInt32(Regex.Match("ABC_123_", @"(?<=_)\d+(?=_)").Value);
注意:如果您的输入字符串格式不正确,则值可能为null / empty,因此请使用int.TryParse或try / catch等。
答案 2 :(得分:2)
我会选择int i = int.Parse(Regex.Match(string,@"\d+"));
答案 3 :(得分:1)
这是一种方式。我不知道“效率最高”,但应该有效:
int? GetJustIntPart(string original)
{
var split = original.Split('_');
int test;
foreach (var item in split)
{
if (int.TryParse(item, out test))
return test;
}
return null;
}
答案 4 :(得分:0)
如果你的字符串等的长度是固定的,你可以使用String.Substring。
你的字符串越复杂,你就越应该使用正则表达式。
答案 5 :(得分:-1)
如果您的字符串输入始终与ABC_123_的形式相同,那么这将起作用
int i = Int32.Parse("ABC_123_".Substring(4, 3));