0

好的,所以基本上我有一个看起来像这样的字符串

“这是随机文本 [这也是随机的] [另一个随机文本] 嘿嘿 [随机条]”

我希望输出是

“这是随机文本 [[这也是随机文本]] [[另一个随机文本]] 嘿嘿 [[随机条]]”

所以基本上找到每个 [ 并附加一个 [ 到它和 ] 相同

最好的方法是什么?谢谢。

4

3 回答 3

4

所以基本上找到每个 [ 并附加一个 [ 到它和 ] 相同

听上去像:

text = text.Replace("[", "[[")
           .Replace("]", "]]");

对我来说......根本不需要正则表达式。

那是假设您当然不需要担心已经加倍的括号。

于 2012-08-19T20:05:50.613 回答
1

这将更有效,因为永远不必调整数组的大小。尽管差异很小,但您最好使用 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();
}
于 2012-08-19T20:23:08.910 回答
0

或者假设你已经用正则表达式标记了这个:

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]]");
于 2012-08-19T20:15:50.983 回答