将int与此字符串分开的最有效方法是什么?

时间:2010-01-11 20:57:00

标签: c# parsing string

我有一个这种格式的字符串:“ABC_123 _”

我想最后得到整数变量,它只是字符串的数字部分。在C#中实现这一目标的最有效方法是什么?

6 个答案:

答案 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));