0

わかりましたので、基本的に私はこのような文字列を持っています

「これはランダムなテキストです [これもランダムです] [別のランダムなテキスト] ヘイホー [ランダムバー]」

出力を

「これはランダムなテキストです [[これもランダムです]] [[別のランダムなテキスト]] ほら [[ランダムバー]]」

したがって、基本的にすべての [ を検索し、それに [ を追加し、 ] についても同じです

これを行う最良の方法は何ですか?ありがとう。

4

3 に答える 3

4

したがって、基本的にすべての [ を検索し、それに [ を追加し、 ] についても同じです

のように聞こえる:

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

私には...正規表現はまったく必要ありません。

もちろん、すでに2倍になっているブラケットについて心配する必要がないことを前提としています。

于 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 に答える