我想从字符串中检索一些数字,例如“valueID = 234232”或“valueID = 2”或“valueID = 23”或“valueID = 2”或“valueID = 234”,那么最简单的方法是什么得到这个数字假设在这个数字后面是空格“”或行尾?
答案 0 :(得分:8)
string input = "valueID = 234232";
var split = input.Split(new char[] {'='});
int value = int.Parse(split[1].Trim());
答案 1 :(得分:1)
只要你确定那里会有一个号码
int.parse( Regex.match(String, @"\d+").value)
答案 2 :(得分:1)
如何使用正则表达式:
Match match = Regex.Match(input, @"\d+");
if (match.Success)
{
number = int.Parse(match.Value);
}
答案 3 :(得分:0)
以下是我一直用于此类事情的一些灵活代码:
public const string FilterDigits = "0123456789";
public const string FilterLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
/// <summary>
/// Strips away any characters not defined in validChars and returns the result.
/// </summary>
public static string FilterTo(string text, string validChars)
{
StringBuilder Result = new StringBuilder();
for (int i = 1; i <= text.Length; i++) {
char CurrentChar = Convert.ToChar(Strings.Mid(text, i, 1));
if (validChars.Contains(CurrentChar)) {
Result.Append(CurrentChar);
}
}
return Result.ToString;
}
然后你可以打电话:
int.parse(FilterTo("valueID=23", FilterDigits));
它也可以变成一个方便的扩展方法,然后你可以这样做:
int.parse("valueID=23".FilterTo(FilterDigits));
答案 4 :(得分:0)
一旦你解析了你的潜在数字(通过regex,split,substr等),TryParse就是一个很大的改进(至少从.NET 3.5开始):
string myPotentialNumber = "1";
int myNumber;
bool isNumber = int.TryParse(myPotentialNumber, out myNumber);
if( isNumber )
{
//do something
}
else
{
//throw error
}
TryParse()是异常安全的,这使得它对于许多类型的转换更快更干净。