2

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

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

我正在尝试用以下代码替换字符串中的 string.Empty 'a':

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

但我的输出是:

This is c r.

我只想删除“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

您需要做几种不同的情况,但这当然是可能的:

  • a 在句子“A car going by”的开头 -> s.StartsWith("A ")

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

于 2013-01-16T21:29:01.170 回答
2

“孤立事件”是什么意思?您是否真正追求这样的东西:

data.Replace(" a ", " ");
于 2013-01-16T21:27:02.817 回答
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 回答