如何将字符串中的"-"替换为空字符串?

41
我有这个字符串:"123-456-7",我需要得到这个字符串:"1234567"。如何用空字符串替换"-"的出现?
6个回答

105
string r = "123-456-7";
r = r.Replace("-", "");

5
小心,如果你使用单引号(表示一个字符),它将无法正常工作 => r.Replace('-', ''); 这让我吃了个大亏。 - Kellen Stuart

25

这应该就可以解决问题:

String st = "123-456-7".Replace("-","");

23
string r = "123-456-7".Replace("-", String.Empty);

对于 .Net 1.0 版本,String.Empty 不会在堆上占用额外的空间,但 "" 需要在堆上分配存储空间,并在栈上存储其地址,从而导致产生更多的汇编代码。因此,String.Empty 比 "" 更快。

同时,使用 String.Empty 可以避免打字错误。

请参阅“String.Empty”和“”之间的区别是什么链接。


1
我不相信这是真的。String.Empty 是表示 "" 的常量。编译器将所有 "" 字面量指向 String.Empty。无论你有多少个 "" 字面量。 - AMissico
1
谢谢AMissico...我刚刚检查了3.5框架的堆栈,你是对的,""和String.Empty指向同一位置。但是,在1.0中,会为""分配堆栈空间。我已经相应地编辑了答案 :) - Rashmi Pandit

4
为了明确,您希望用空格/无内容替换每个连字符(-)。如果您用退格键替换它,将擦除其前面的字符! 这会导致: 123-456-7 ==> 12457 Sean Bright 的答案是正确的。

2

-1

使用String.Empty或null代替"",因为""会为每个出现创建一个对象在内存中,而其他的则会重复使用同一个对象。


6
并不正确,参见https://dev59.com/NXVC5IYBdhLWcg3wihqv - weston
正确!抱歉,我有一个错误的想法。谢谢你纠正我。 - Darshana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接