我有一个字符串
"transform(23, 45)"
从这个字符串我必须提取23和45,我做了
var xy = "transform(23,45)".Substring("transform(23,45)".indexOf('(') + 1).TrimEnd(')');
var num = xy.Split(',');
我正在使用c#。有没有更好的方法在c#中执行此操作?
答案 0 :(得分: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
}
答案 1 :(得分: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.
}
答案 2 :(得分:0)
这样做
string[] t = "transform(23, 45)".ToLower().Replace("transform(", string.Empty).Replace(")", string.Empty).Split(',');
答案 3 :(得分: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;
}