2

C#の文字列から特定のサブ文字列を置き換えようとしています。

私の文字列は:This is a car.

そして、私は「a」を文字列に置き換えようとしています。文字列からこのコードを空にします。

data = data.Replace("a", string.Empty);

しかし、私の出力は:

This is c r.

このchar/wordが他の単語(車など)で使用されている場合ではなく、「a」の孤立した出現を削除したいだけです。

次のような出力が必要です。This is car.

C#でこれを行うにはどうすればよいですか?

4

7 に答える 7

5

単語の境界で「a」にのみ一致する正規表現パターンが必要です。"\b"正規表現パターンでは、単語の境界を示します。

Regex.Replace("this is a car", @"\ba\b", "")

大文字の「A」も一致させる場合は、パターンが大文字小文字(RegexOptions.IgnoreCase)を無視していることを確認するか、パターンに「A」を明示的に追加し"\b[Aa]\b"ます。

于 2013-01-16T21:29:57.610 に答える
2

「孤立した発生」とはどういう意味ですか?それはおそらくあなたが本当に求めているこのようなものですか?

data.Replace(" a ", " ");
于 2013-01-16T21:27:02.817 に答える
2

いくつかの異なるケースを実行する必要がありますが、それは確かに可能です。

  • 文頭のa「車が通り過ぎた」->s.StartsWith( "A")

  • 真ん中のa「これは車です」->Replace( "a"、 "")

于 2013-01-16T21:29:01.170 に答える
1

スペースも検索してください。

data = data.(" a ", " ")
于 2013-01-16T21:26:37.127 に答える
1

正規表現を使用して、単語として適格な「a」のインスタンスに制限することができます。

string input = "This is a car. A thing to watch out for.";
string output = Regex.Replace(input, "\ba\b", "");

//Results in "This is car. A thing to watch out for."

大文字と小文字、およびその他の文字を処理する文字クラスを追加することもできます。元。\ s [Aa] \ s

\ sは、空白文字を意味します

于 2013-01-16T21:26:48.963 に答える
0

代わりに文字列「a」を検索し、文の構成を正しく保つためにスペースに置き換えます。

data = data.Replace(" a ", " ");
于 2013-01-16T21:26:28.900 に答える
0

これは、StringBuilderクラスのreplaceメソッドを使用する絶好の機会のようです。

StringBuilder.Replaceメソッド

このインスタンスで指定された文字または文字列のすべての出現箇所を、別の指定された文字または文字列に置き換えます。

OVERLOADS Replace(Char、Char)このインスタンスで指定された文字のすべての出現箇所を、別の指定された文字に置き換えます。

Replace(String、String)このインスタンスで指定された文字列のすべての出現箇所を、別の指定された文字列に置き換えます。

Replace(Char、Char、Int32、Int32)このインスタンスのサブストリング内で、指定された文字のすべての出現箇所を別の指定された文字に置き換えます。

Replace(String、String、Int32、Int32)このインスタンスのサブ文字列内で、指定された文字列のすべての出現箇所を別の指定された文字列に置き換えます。

string myString = "This is a car.";
StringBuilder sb = new StringBuilder(myString);
sb.Replace(' a ', ' ');

ソース

于 2021-04-12T14:42:54.710 に答える