在动态位置仅抓取部分字符串
本文关键字:字符串 抓取部 动态 位置 | 更新日期: 2023-09-27 18:27:13
我有一个字符串文件,其内容类似于
string a = "12,1,______,_,__;1,23,122;"
我只想获取这个整数值23
。问题是,这个连接是动态的,它的长度可以更改,所以这个字符串a可以很容易地在下一次迭代中像一样
string a = "12,1,______,_,__;11,2,1;"
在这种情况下,我会获取整数2。
如果结构始终相同,则:
拆分字符串,并在最后一个元素之前抓取该元素。
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]
字符串.拆分
忽略错误检查一分钟,这将起作用:
string a = "12,1,______,_,__;11,2,1;"
int i = Int32.Parse(String.Split(',')[5])
如果这是你要走的路线,你应该格外小心地验证你的输入。检查从Split
重新调用的数组的长度,并验证第5个值是否确实可以解析为int
。
试试这个正则表达式:
(?<=;'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);
}
}
试试这个:
var number = a.split(",")[5];
另一个选项是将文本拆分为数组(如果它们具有相同的模式):
var output = a.Split(",;".ToCharArray());
var value = output[theIndex]; // get the index you want