从字符串中提取整数
本文关键字:整数 提取 字符串 | 更新日期: 2023-09-27 18:03:58
这可能真的很简单,但我有一个服务,返回一个字符串,其中有一个数字前面有零。0的计数是不可预测的,但我需要从值中提取数字。值的长度也不是恒定的。例如,00001234, 002345667, 0000000, 011, 00000987
-在所有这些值中,我需要提取1234, 2345667, <no value>, 11, 987
。我试过做下面的代码,但它也返回零:
string.Join( null,System.Text.RegularExpressions.Regex.Split( expr, "[^''d]" ) );
有人能帮忙吗?
得到我的答案::
我用stringObj.TrimStart('0')
得到它。但我同意使用Int。解析或整型。TryParse是更好的处理方式。希望这对像我这样的人有用!
int ret;
if (int.TryParse("0001234", out ret))
{
return ret.ToString();
}
throw new Exception("eep");
var numString = "00001234, 002345667, 0000000, 011, 00000987";
// result will contain "1234, 2345667, <no value>, 11, 987"
var result = string.Join(", ", numString.Split().Select(s =>
{
var intVal = int.Parse(s);
return intVal == 0 ? "<no value>" : intVal.ToString();
}));
转换为整数并返回到字符串?
int num = Convert.ToInt32(val);
string val = Convert.ToString(num);
应该可以了
string s = "0005";
string output = Convert.ToInt32(s.TrimStart(Convert.ToChar("0")));
正则表达式的威力!
static readonly Regex rx = new Regex( @"[^'d]*((0*)([1-9][0-9]*)?)" ) ;
public static IEnumerable<string> ParseNumbers( string s )
{
for ( Match matched = rx.Match(s) ; matched.Success ; matched = matched.NextMatch() )
{
if ( matched.Groups[1].Length > 0 )
{
yield return matched.Groups[3].Value ;
}
}
}
将字符串"00001234, 002345667, 0000000, 011, 00000987"
传递给ParseNumbers()
产生枚举
- "1234"
- "2345667"
- "
- "十一"
- "987"
干杯!
000000 is 0 not null....
int intInteger = -1;
int.tryparse(stringNumber,out intInteger);
应该给你一个干净的整数。
可以使用Int。解析将字符串解析为整数。
String s = "00001234, 002345667, 0000000, 011, 00000987";
string[] nums= s.Split(',');
foreach (string num in nums
{
Console.WriteLine(Int.Parse(num)); //you'll need special handling to print "<no value>" when the string is 0000000
}
(实际上还没有编译)