4

一部の文字を正規表現またはその他のベスト プラクティスまたは効率的な方法に置き換えることについて質問があります。
これは私が入力として持っているもので、ほとんど同じ形式です:A/ABC/N/ABC/123
出力は次のようになります: A_ABC_NABC123、基本的に最初の2つ/をに変更し_、残りを削除する必要があります。
もちろん、私はいくつかで行うことができますString.Replace。などを1つずつ行っていますが、それを行うのは良い方法ではないと思います。私はより良い解決策を探します。

では、正規表現でそれを行う方法は?

4

2 に答える 2

7

これでうまくいきますが、もっと簡単な方法があるかもしれません:

static class CustomReplacer
{
    public static string Replace(string input)
    {
        int i = 0;
        return Regex.Replace(input, "/", m => i++ < 2 ? "_" : "");
    }
}

var replaced = CustomReplacer.Replace("A/ABC/N/ABC/123");

int誤って変数を使用しないように、このようにコードをラップしました。

編集:特定の回数の置換後に停止するこのオーバーロード/もありますが、2 つの手順で行う必要があります。最初の 2 つを_に置き換え、残り/を何も置き換えません。

于 2012-11-28T11:20:49.490 に答える
0

これを試して:

string st = "A/ABC/N/ABC/123";
string [] arrStr = st.Split(new char[] { '/' });
st = string.Empty;
for (int i = 0; i < arrStr.Length; i++)
{
    if (i < 2)
        st += arrStr[i] + "_";
    else
        st += arrStr[i];
}
于 2012-11-28T11:26:38.523 に答える