2012-11-12 131 views
0

我期待找到以下字符串中的整数值内的整数值:查找字符串

“VALUE =” 5412304756756756756756792114343986"

我怎样才能做到这一点使用C#

+1

字符串中的''是否是故意的? –

+2

你想要数字部分是一个整型还是一个字符串?值看起来太大,不能成为'int' –

+1

@SteveHaigh它实际上太大了,甚至不能成为'long'。 –

回答

4

您可以使用正则表达式来查找字符串数量:

var resultString = Regex.Match(subjectString, @"\d+").Value; 

为负值:

var resultString = Regex.Match(yourString, @"(|-)\d+").Value; 
+2

可能不够用可能的负号等。 – Davio

+3

使用Int32.Parse(Regex.Match(你可以使用@PLB – andy

2

你可以看看等号...

string yourString = "value=5412304756756756756756792114343986"; 
string integerPart = yourString.Split('=')[1]; 
1
 Match match = new Regex("[0-9]+").Match("value=\"5412304756756756756756792114343986\""); 
     while(match.Success) 
     { 
      // Do something 
      match = match.NextMatch(); 
     } 
2

您可以使用char.IsDigi吨 喜欢的东西。

string str = "value=5412304756756756756756792114343986"; 
List<char> justDigits = new List<char>(); 
foreach(char c in str) 
{ 
    if (char.IsDigit(c)) 
     justDigits.Add(c); 
} 

string intValues = new string(justDigits.ToArray()); 

或者较短的版本

string intValues = new string(str.Where(char.IsDigit).ToArray()); 
+0

提供的负值的yourString,@“(| - )\ d +”)。Value)过长和耗时 – andy

+1

@Anandkumar,短版本怎么样? – Habib

+0

Habib sir,短版本是超级先生......但我的问题是哪一个比@Preben Huybrechts回答好即var resultString = Regex.Match(subjectString,@“\ d +”)。Value; – andy

2

您可以使用Regex

这太符合负数。你也可以迭代字符串中的每个字符,并检查它们是否是数字,但不是真正理想的解决方案,因为它可能是一个瓶颈。

编辑:在您输入的数字大于long。对于这样的数字,你可以使用从框架4.0开始的BigInteger

+0

int IntVal = Int32将不适用于“5412304756756756756756792114343986” – andy

+0

@Anandkumar谢谢,编辑。 – Leri