我的字符串文件包含这样的内容
string a = "12,1,______,_,__;1,23,122;"
我想只抓取这个整数值23
。问题是这个问题是动态的,我的长度可以改变,所以这个字符串a很容易在下一次迭代中像
string a = "12,1,______,_,__;11,2,1;"
在这种情况下,我会抓住整数2。
答案 0 :(得分:3)
如果结构总是相同的话,那么:
拆分字符串,并在最后一次抓取元素。
var array1 = a.Split(';');
// check the array length if it's needed to avoid
// IndexOutOfRangeException exception
var array2 = array1[1].Split(',');
var yourNumber = array2[array2.Length - 2]
答案 1 :(得分:2)
忽略错误检查一分钟,这可行:
string a = "12,1,______,_,__;11,2,1;"
int i = Int32.Parse(String.Split(',')[5])
如果这是您要去的路线,您应该格外小心以验证您的输入。检查从Split
重新调整的数组的长度,并验证第5个值是否确实可以解析为int
。
答案 2 :(得分:1)
试试这个正则表达式:
(?<=;\d*,)\d*(?=,\d*;)
样本用法:
class Program
{
static void Main(string[] args)
{
string a = "12,1,______,_,__;1,23,122;";
var regex = new Regex(@"(?<=;\d*,)\d*(?=,\d*;)");
Console.WriteLine(regex.Match(a).Value);
a = "12,1,______,_,__;11,2,1;";
Console.WriteLine(regex.Match(a).Value);
}
}
答案 3 :(得分:1)
试试这个:
var number = a.split(",")[5];
答案 4 :(得分:1)
另一种选择是将文本拆分为数组(如果它们具有相同的模式):
var output = a.Split(",;".ToCharArray());
var value = output[theIndex]; // get the index you want