C# 如何从括号(字符串的结尾部分)中提取数字?

C# 如何从括号(字符串的结尾部分)中提取数字?,c#,numbers,extraction,brackets,C#,Numbers,Extraction,Brackets,我的问题是从字符串中提取一个整数(用C#)。有一个字符串可以在结尾的圆括号中有一个整数正数(不带前导零),例如“This is a string(125)”。我想写一个代码来验证它是否有这样一个表单,如果有,则从中提取数字和其余部分。例如,如果字符串为“thisastring(125)”,则结果应为“thisastring”(类型:string)和125(整数)。如果字符串为“另一个示例(7)”,则结果应为“另一个示例”和7。正则表达式有用吗,还是我应该编写一个解析函数?您可以试试这个 stri

我的问题是从字符串中提取一个整数(用C#)。有一个字符串可以在结尾的圆括号中有一个整数正数(不带前导零),例如“This is a string(125)”。我想写一个代码来验证它是否有这样一个表单,如果有,则从中提取数字和其余部分。例如,如果字符串为“thisastring(125)”,则结果应为“thisastring”(类型:string)和125(整数)。如果字符串为“另一个示例(7)”,则结果应为“另一个示例”和7。正则表达式有用吗,还是我应该编写一个解析函数?

您可以试试这个

string firstPart = Regex.Match(inputString, @"\(([^)]*)\)").Groups[0].Value;
int number;
Int32.TryParse(Regex.Match(inputString, @"\(([^)]*)\)").Groups[1].Value, out number);
编辑:


显然,您可以对此进行优化,而不必进行两次匹配,但这说明了如何使用它。

如果输入值始终具有相同的结构(如/type/bracket/value/bracket),则可以通过:
1) 正则表达式
2) String.Split()

3) String.IndexOf()

使用正则表达式
\((\d})\$
,它将字符串末尾的数字作为一个组

        string testString = "This is a string (125)asbcd";
        string[] stringPart = testString.Split('(', ')');

这里,stringPart[0]是字符串部分,stringPart[1]是数字部分。

Regex是最佳选择。更简单的是,您也可以尝试string.Split()字符串部分(在数字部分之前)是否可以包含括号,如“第三个示例(49)”?如果您不想使用正则表达式,可以使用简单的string.LastIndexOf()查找括号。