如何解决从字符串中获取数字的最简单方法
| 我想从字符串中检索一些数字,例如\“ valueID = 234232 \”或\“ valueID = 2 \”或\“ valueID = 23 \”或\“ valueID = 2 \”或\“ valueID = 234 \” ,那么假设此数字之后是空格\“ \”或行尾,那么最简单的方法是什么?解决方法
string input = \"valueID = 234232\";
var split = input.Split(new char[] {\'=\'});
int value = int.Parse(split[1].Trim());
,只要您确定里面会有一个数字
int.parse( Regex.match(String,@\"\\d+\").value)
,如何使用正则表达式:
Match match = Regex.Match(input,@\"\\d+\");
if (match.Success)
{
number = int.Parse(match.Value);
}
,这是我一直使用的一些灵活代码,用于处理这类事情:
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));
,一旦解析了可能的数字(通过正则表达式,拆分,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()是异常安全的,这使得它对于许多类型的转换而言都更快,更干净。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。