6

これは簡単な問題のように思えますが、どのように対処すればよいかわかりません。文字列の一部を削除するコード行があります。これを単に削除するだけでなく、別のものに置き換えるように変更したいだけです。次のコード サンプルのように、string.replace をインデックスと共に使用する方法はありますか?

output = output.Remove(m.Index, m.Length);
4

5 に答える 5

9

いいえ、これを行うことは何もありません。最も簡単な方法はSubstring、文字列連結を使用することです。

public static string Replace(string text, int start, int count,
                             string replacement)
{
    return text.Substring(0, start) + replacement 
         + text.Substring(start + count);
}

これにより、たまたまそのテキストに一致する文字列の他のセクションを確実に置き換えないことが保証されることに注意してください。

于 2013-08-12T15:50:40.190 に答える
3

すべての素晴らしい答え、これを行うこともできます:

  String result = someString.Remove(m.Index, m.Length).Insert(m.Index, "New String Value");

それは最もきれいなコードではありませんが、機能します。

通常、これを拡張メソッドまたは何らかの基本機能に記述して、同じことを繰り返す必要がないようにすることをお勧めします。

于 2013-08-12T15:54:09.470 に答える
1

あなたはただできませんか:

output = output.Replace(output.Substring(m.Index, m.Length), "Whatever I want to replace with");

注意: これにより、部分文字列のすべてのインスタンスが置き換えられます。

于 2013-08-12T15:50:23.190 に答える
0

これにより、インデックスと長さに基づいて部分文字列が削除され、置換文字列に置き換えられます。

Jon の答えは、驚くことではありませんが、削除文字列の複数のインスタンスを置き換えないため、より正確です。

    static string Replace(string output, string replacement, int index, int length)
    {
        string removeString = output.Substring(index, length);
        return output.Replace(removeString, replacement);
    }
于 2013-08-12T15:51:42.310 に答える
0

私はそれを何か他のものに置き換えています。これを試して他の文字列に置き換えることができます:-

string s= original.Substring(0, start) + "ABCDEF"+ 
              original.Substring(end);
于 2013-08-12T15:50:56.943 に答える