我正在尝试用C#中的字符串替换特定的子字符串。
我的字符串是:This is a car.
我正在尝试使用此代码从字符串中用string.Empty替换'a':
data = data.Replace("a", string.Empty);
但我的输出是:
This is c r.
我只想删除'a'的孤立出现,而不是在其他单词(如汽车)中使用此字符/单词时。
我想要一个类似于This is car.
我怎样才能在C#中做到这一点?
答案 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 方法
替换此中所有出现的指定字符或字符串 具有另一个指定字符或字符串的实例。
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 ', ' ');