替换特定字符串C#?

时间:2013-01-16 21:24:40

标签: c# string

我正在尝试用C#中的字符串替换特定的子字符串。

我的字符串是:This is a car.

我正在尝试使用此代码从字符串中用string.Empty替换'a':

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

但我的输出是:

This is c r.

我只想删除'a'的孤立出现,而不是在其他单词(如汽车)中使用此字符/单词时。

我想要一个类似于This is car.

的输出

我怎样才能在C#中做到这一点?

7 个答案:

答案 0 :(得分:5)

您需要一个仅与字边界上的“a”匹配的正则表达式模式。正则表达式中的"\b"表示单词边界:

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

如果你想匹配大写的“A”,请确保你的模式忽略大小写(RegexOptions.IgnoreCase)或明确地将“A”添加到"\b[Aa]\b"这样的模式。

答案 1 :(得分:2)

你对'孤立的发生'是什么意思?这可能是你真正想要的事情:

data.Replace(" a ", " ");

答案 2 :(得分:2)

你需要做几个不同的案例,但肯定有可能:

  • 句子开头的“汽车经过” - > s.StartsWith(“A”)

  • a中间的“这是一辆车” - >替换(“a”,“”)

答案 3 :(得分:1)

也搜索空格。

data = data.(" a ", " ")

答案 4 :(得分: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表示任何空格字符

答案 5 :(得分:0)

搜索字符串“a”,并用空格替换以保持句子结构正确;

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

答案 6 :(得分: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 ', ' ');

SOURCE