我尝试从字符串中删除所有特定字符。 我一直在使用String.Replace
,但它没有任何作用,而且我不知道为什么。 这是我当前的代码:
if (Gamertag2.Contains("^"))
{
Gamertag2.Replace("^" + 1, "");
}
这仅仅保留了原字符串。有人能否解释一下为什么呢?
String.Replace
的返回值赋给原始字符串实例:Contains检查
):if (Gamertag2.Contains("^"))
{
Gamertag2.Replace("^" + 1, "");
}
只需要这个(那个神秘的+1
是什么意思?):
Gamertag2 = Gamertag2.Replace("^", "");
Gamertag2 = Gamertag2.Replace("^", "");
绝对会移除任何 "^" 的实例。在 String.Replace
之后设置一个断点,看看它是否从 Gamertag2
中移除了 "^"。 - Mike Park有两件事情需要注意:
1)C# 字符串是不可变的。你需要这样做:
Gamertag2 = Gamertag2.Replace("^" + 1, "");
2) 为什么要写"^" + 1
?你实际上是在执行Gamertag2.Replace("^1", "");
,我相信这不是你想要的。
就像climbage所说,你的问题绝对是
Gamertag2.Replace("^"+1,"");
这行代码只会从你的字符串中删除 "^1"。如果你想要删除所有的 "^",你需要使用以下代码:
Gamertag2.Replace("^","");
我知道这个线程已经很旧了,而且我的解决方案可能极其低效,但它可以替换字符串的所有出现。我发现如果我想用 "\r\n\r\n" 替换 "\r\n\r\n\r\n",单独使用 Replace() 是无法捕获全部的。
因此,这样做:
do // First get rid of spaces like " \r"
{
str = str.Replace(" \r","\r")
} while (str.Cointains(" \r"));
do // Then remove the CrLf's in surplus.
{
str = str.Replace("\r\n\r\n\r\n","\r\n\r\n")
} while (str.Cointains("\r\n\r\n\r\n"));