2013-01-16 100 views
2

我想从C#中的字符串替换特定的子字符串。替换特定的字符串C#?

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

,我试图从这个串码 'A' 用的String.Empty替换:

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

但我的输出是:

This is c r. 

我只是想删除孤立的'a'的发生,而不是当这个字/字用于其他一些字(如汽车)。

我要像一部份输出:This is car.

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

+0

哇,许多热门的触发器人:-) – Christoffer

回答

5

您需要一个正则表达式模式,它只能匹配单词边界上的“a”。 "\b"在正则表达式表示字边界:

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

如果你想匹配大写字母“A”,以及,确保你的模式是不区分大小写(RegexOptions.IgnoreCase)或明确将“A”添加到图案像"\b[Aa]\b"

+1

这会在给定的测试用例中留下两个相邻的空格。 –

+0

@WizardofOgz它的行为与编写的代码类似。当然,该行与输出不匹配,所以我不确定期望的行为究竟是什么。 –

+0

谢谢!有效。 – Arry

0

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

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

也搜索空间。

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

有人不同意这个答案显然 –

+0

是的,看到四个人在几秒钟内拍摄相同的单行内容很有趣,但所有人在同一时间投下的票更加搞笑 – Christoffer

+0

请参阅@Zdravko Danev,了解您的解决方案未涵盖的情况。 – mbeckish

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表示任何空白字符

+0

你能用一个例子来解释一下吗? – Arry

2

你是什么意思与 '隔离occurence'?它是也许这样的事情你真的后:

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

你需要做几个不同的情况,但可以肯定的是可能的:

  • 一个在句首“A车流逝 “ - > s.StartsWith( ”A “)

  • 一个中间 ”这是一辆“ - >替换(” A“,”“)

+0

您忘记了字符串以'a'结尾的情况,这是必需的,因为要替换的字符串有一个尾部空格:-) – Christoffer

+0

这是可以接受的解决方案,但似乎并不是一个很好的方法。有没有更好的方法来实现这一目标? 感谢您的回答! – Arry

+0

@Arry--你不喜欢Mehrdad Afshari的解决方案吗? – mbeckish