我试图在字符串中提取特定的数字,格式为"Q23-00000012-A14",我只想获得8位数00000000的数字。
string rx = "Q23-00000012-A14"
string numb = Regex.Replace(rx, @"D", "");
txtResult.Text = numb;
但是我得到的结果是230000001214,我只想得到12而忽略其余的。
如果您的字符串总是以这种格式(数字被"-"覆盖),我建议使用string.split()
string rx = "Q23-00000012-A14"
string numb = int.parse(rx.Split('-')[1]).ToString();//this will get 12 for you
txtResult.Text = numb;
这比使用regex
更简单编辑! !当您使用rx.split('-')时,它将字符串分解为字符串数组,其值在'-'之前和之后拆分文本
在这个例子中:
rx.Split("-")[0]="Q23处"
rx.Split("-")[1]="00000012"
rx.Split("-")[2]= " A12 "
所以你不应该使用Replace。使用Match代替。
string pattern = @"[A-Z]d+-(d+)-[A-Z]d+" ;
var regex = new Regex(pattern);
var match = regex.Match("Q23-00000012-A14");
if (match.Success)
{
String eightNumberString = match.Groups[1].Value; // Contains "00000012"
int yourvalueAsInt = Convert.ToInt32(eightNumberString) ; // Contains 12
}
为什么使用不简单的子字符串或分割函数?
string rx = "Q23-00000012-A14";
// substring
int numb = int.Parse(rx.Substring(5, 8));
// or split
int numb = int.Parse(rx.Split('-')[1]);
txtResult.Text = numb.ToString();
(我认为这是一个更好的方式来使用分割方法,因为如果你改变你的常数'Q23'的长度方法仍然有效)