如何在c#中从字符串中获得两个数值
本文关键字:两个 字符串 | 更新日期: 2023-09-27 18:02:07
我有一个这样的字符串:
X有限公司(521000000/58447000)
我想分别提取X LIMITED COMPANY、52100000和58447000。
我像这样提取X LIMITED COMPANY:
companyName = Regex.Match(mystring4, @"[a-zA-Z's]+").Value.Trim();
但我坚持提取数字,他们可以是1,2或更大的数字在这个例子中。你能告诉我如何提取这些数字吗?谢谢。
尝试替换|
(或)的正则表达式:
- 任意文字符号(但不包括数字)
['w-['d]]['w's-['d]]+)
- 数字
([0-9]+)
。
string mystring4 = @"AKASYA CAM SANAYİ VE TİCARET LİMİTED ŞİRKETİ(52100000 / 58447000)";
string[] values = Regex
.Matches(mystring4, @"(['w-['d]]['w's-['d]]+)|([0-9]+)")
.OfType<Match>()
.Select(match => match.Value.Trim())
.ToArray();
测试// X LIMITED COMPANY
// 52100000
// 58447000
Console.Write(string.Join(Environment.NewLine, values));
我建议将初始模式[a-zA-Z's]+
更改为[a-zA-Z][a-zA-Z's]+
,以便跳过仅包含分隔符的匹配(例如" "
)
尝试使用命名组:
var s = "X LIMITED COMPANY (52100000 / 58447000)";
var regex = new Regex(@"(?<CompanyName>[^'(]+)'((?<Num1>'d+)'s*/'s*(?<Num2>'d+)')");
var match = regex.Match(s);
var companyName = match.Groups["CompanyName"];
如果格式是固定的,您可以尝试这样做:
var regex = new Regex(@"^(?<name>[^'(]+)'((?<n1>'d+)/(?<n2>'d+)')");
var match = regex.Match(input);
var companyName = match.Groups["name"].Value;
var number1 = Convert.ToInt64(match.Groups["n1"].Value);
var number2 = Convert.ToInt64(match.Groups["n2"].Value);
匹配左括号之前的所有内容,并将其放入命名组"name"中。然后,它匹配括号内的两个数字,用"/"分隔,并将它们分别放入名为"n1"answers"n2"的组中。