我正在尝试用int^
替换<int>^
的每个子字符串。
例如:如果我有字符串"aaa500^bbb"
我想获取字符串"aaa<500>^bbb"
答案 0 :(得分:5)
这是regular expression的好例子。
Regex.Replace("aaa500^bbb", @"(\d+)\^", @"<$1>^") // aaa<500>^bbb
释
(\d+)\^
捕获一个或多个数字,后跟插入符^
<$1>^
将捕获的数字替换为有角度的括号之间的捕获数字,后跟插入符^
。答案 1 :(得分:3)
根据我的评论......
下面的正则表达式如下:
\d+
并将其捕获到第1组^
替换的工作原理如下:
<
并附加>^
You can see this code in use here
(\d+)\^
<$1>^
aaa5^bbb
aaa55^bbb
aaa<5>^bbb
aaa<55>^bbb
答案 2 :(得分:1)
根据这一点,应该有效(未经测试)。可以稍后扩展以确保获取的值实际上是一个有效的int(例如,不溢出)。
public static string Do(string myString)
{
var sb = new StringBuilder();
var open = false;
var digits = new HashSet<char>{'0', '1', '2','3','4','5','6','7','8','9'};
foreach(var c in myString)
{
if (digits.Contains(c))
{
if (!open)
{
sb.Append("<");
open = true;
}
}
else
{
if (open)
{
open = false;
sb.Append(">");
}
}
sb.Append(c);
}
if (open)
{
sb.Append(">");
}
return sb.ToString();
}