0

我有一个字符串

"transform(23, 45)"

我必须从这个字符串中提取 23 和 45,我做到了

var xy = "transform(23,45)".Substring("transform(23,45)".indexOf('(') + 1).TrimEnd(')');
var num = xy.Split(',');

我正在使用 c#。在c#中有没有更好的方法来做到这一点?

4

4 回答 4

6

使用正则表达式:

string sInput = "transform(23, 45)";
Match match = Regex.Match(sInput, @"(\d)+",
              RegexOptions.IgnoreCase);

if (match.Success)
{
    foreach (var sVal in match)
             // Do something with sVal
}

您可以在此处阅读有关正则表达式的更多信息。使用RegExr进行培训,它有很大帮助!

于 2012-07-16T06:37:09.687 回答
2

好吧,一个简单的正则表达式字符串是([0-9]+),但您可能需要定义其他表达式约束,例如,您在做什么来处理字符串中的句点、逗号等?

var matches = Regex.Matches("transform(23,45)", "([0-9]+)");
foreach (Match match in matches)
{  
    int value = int.Parse(match.Groups[1].Value);
    // Do work.
}
于 2012-07-16T06:39:41.587 回答
0

使用Regex

var matches = Regex.Matches(inputString, @"(\d+)");

解释:

\d    Matches any decimal digit.

\d+   Matches digits (0-9) 
      (1 or more times, matching the most amount possible) 

并用于:

foreach (Match match in matches)
{  
    var number = match.Groups[1].Value;
}
于 2012-07-16T06:53:43.677 回答
0

这会做到的

string[] t = "transform(23, 45)".ToLower().Replace("transform(", string.Empty).Replace(")", string.Empty).Split(',');
于 2012-07-16T06:46:00.827 回答