我需要恢复粘贴字符串中的每个数字
例如,从以下字符串中:
string test = "number1+3"
string test1 = "number 1+4"
我想恢复(1和3)和(1和4) 我该怎么办?
代码
string test= "number1+3";
List<int> res;
string[] digits= Regex.Split(test, @"\D+");
foreach (string value in digits)
{
int number;
if (int.TryParse(value, out number))
{
res.Add(number)
}
}
答案 0 :(得分:2)
此正则表达式应该有效
string pattern = @"\d+";
string test = "number1+3";
foreach (Match match in Regex.Matches(test, pattern))
Console.WriteLine("Found '{0}' at position {1}",
match.Value, match.Index);
请注意,如果您打算多次使用它,出于性能原因,最好创建一个Regex实例,而不是使用此静态方法。
var res = new List<int>();
var regex = new Regex(@"\d+");
void addMatches(string text) {
foreach (Match match in regex.Matches(text))
{
int number = int.Parse(match.Value);
res.Add(number);
}
}
string test = "number1+3";
addMatches(test);
string test1 = "number 1+4";
addMatches(test1);
答案 1 :(得分:1)
这需要一个正则表达式:
(\d+)\+(\d+)
Match m = Regex.Match(input, @"(\d+)\+(\d+)");
string first = m.Groups[1].Captures[0].Value;
string second = m.Groups[2].Captures[0].Value;
答案 2 :(得分:1)
正则表达式的替代方法:
string test = "number 1+4";
int[] numbers = test.Replace("number", string.Empty, StringComparison.InvariantCultureIgnoreCase)
.Trim()
.Split("+", StringSplitOptions.RemoveEmptyEntries)
.Select(x => Convert.ToInt32(x))
.ToArray();