如何确定字符串开头是否有两个或一个数字?

时间:2010-09-28 01:19:06

标签: c# parsing html-parsing

如何确定字符串开头的数字(任意位数)?

一些可能的字符串:

1123|http://example.com
2|daas

哪个应该返回1123和2.

4 个答案:

答案 0 :(得分:6)

使用正则表达式:

using System.Text.RegularExpressions;

str = "35|http:\/\/v10.lscache3.c.youtube.com\/videoplayback...";

Regex r = new Regex(@"^[0-9]{1,2}");
Match m = r.Match(str);    
if(m.Success) {
    Console.WriteLine("Matched: " + m.Value);
} else {
    Console.WriteLine("No match");
}

将在字符串的开头捕获1-2位数字。

答案 1 :(得分:5)

您可以使用LINQ:

string s = "35|...";

int result = int.Parse(new string(s.TakeWhile(char.IsDigit).ToArray()));

或(如果数字后面总是跟|)良好的字符串操作:

string s = "35|...";

int result = int.Parse(s.Substring(0, s.IndexOf('|')));

答案 2 :(得分:0)

如果你知道这个数字总是2位数:

string str = "35|http:\/\/v10.lscache3.c.youtube.com\/videoplayback?...";
int result;
if (!int.TryParse(str.Substring(0, 2), out result)) {
    int.TryParse(str.Substring(0, 1), out result)
}
// use the number

如果您不确定该数字的长度,请查看dtb的.indexOf()方法。如果你需要更复杂的东西,那么只考虑使用正则表达式。

答案 3 :(得分:0)

您可以获取前两个字符并转换为int。

var s = "a35|...";
short result = 0;
bool isNum = Int16.TryParse(s.Substring(0, 2), out result);