好的,所以基本上我有一个看起来像这样的字符串
“这是随机文本 [这也是随机的] [另一个随机文本] 嘿嘿 [随机条]”
我希望输出是
“这是随机文本 [[这也是随机文本]] [[另一个随机文本]] 嘿嘿 [[随机条]]”
所以基本上找到每个 [ 并附加一个 [ 到它和 ] 相同
最好的方法是什么?谢谢。
所以基本上找到每个 [ 并附加一个 [ 到它和 ] 相同
听上去像:
text = text.Replace("[", "[[")
.Replace("]", "]]");
对我来说......根本不需要正则表达式。
那是假设您当然不需要担心已经加倍的括号。
这将更有效,因为永远不必调整数组的大小。尽管差异很小,但您最好使用 Jon Skeet 的方法。
public string InsertBrackets(string text)
{
int bracketCount = 0;
foreach (char letter in text)
if (letter == '[' || letter == ']')
bracketCount++;
StringBuilder result = new StringBuilder(text.Length + bracketCount);
for(int i = 0, j = 0; i < text.Length && j < result.Length; i++, j++)
{
result[j] = text[i];
if (text[i] == '[')
result[++j] = '[';
else if (text[i] == ']')
result[++j] = ']';
}
return result.ToString();
}
或者假设你已经用正则表达式标记了这个:
var foo = "this is random text [this is random too] " +
"[another random text] hey ho [random bar]";
var regex = new Regex(@"\[(.*?)\]");
string bar = regex.Replace(foo, @"[[$1]]");