如何在C#.NET中用空字符替换字符串中的char

时间:2011-06-16 14:12:24

标签: c#

我有一个这样的字符串:

string val = "123-12-1234";

如何在C#中使用空字符串替换短划线。

我的意思是val.Replace(char oldChar, newChar);

oldCharnewChar需要做些什么。

8 个答案:

答案 0 :(得分:95)

您可以使用带有字符串的Replace()的不同重载。

val = val.Replace("-", string.Empty)

答案 1 :(得分:39)

由于其他答案在这里,即使是正确的,也没有明确解决你的初步疑虑,我会这样做。

如果你致电string.Replace(char oldChar, char newChar),它会用另一个字符替换字符的出现次数。这是一对一的替代品。因此,结果字符串的长度将相同。

你想要的是删除破折号,这显然与用另一个角色替换它们不同。你不能用“无字符”替换它,因为1个字符总是1个字符。这就是为什么你需要使用带字符串的重载:字符串可以有不同的长度。如果用长度为0的字符串替换长度为1的字符串,效果是破折号消失,替换为“无”。

答案 2 :(得分:5)

这似乎太简单了,但是:

val.Replace("-","");

答案 3 :(得分:5)

val.Replace("-", "");

MSDN Source

答案 4 :(得分:4)

string val = "123-12-1234";

val = val.Replace("-", ""); // result: 123121234

答案 5 :(得分:1)

如果您处于循环中,请告诉您循环显示要删除的标点字符列表,可以执行以下操作:

      private const string PunctuationChars = ".,!?$";
          foreach (var word in words)
                {
                    var word_modified = word;

                    var modified = false;

                    foreach (var punctuationChar in PunctuationChars)
                    {
                        if (word.IndexOf(punctuationChar) > 0)
                        {
                            modified = true;
                            word_modified = word_modified.Replace("" + punctuationChar, "");


                        }
                    }
               //////////MORE CODE
               }

诀窍如下:

word_modified.Replace("" + punctuationChar, "");

答案 6 :(得分:1)

如果你想用一个空字符替换字符串中的字符,这意味着你要从字符串中删除那个字符,请阅读R. Martinho Fernandes的答案。

以下是如何从字符串中删除char的示例(替换为" Empty char"):

    public static string RemoveCharFromString(string input, char charItem)
    {
        int indexOfChar = input.IndexOf(charItem);
        if (indexOfChar >= 0)
        {
            input = input.Remove(indexOfChar, 1);
        }
        return input;
    }

或此版本删除字符串中char的所有重复:

    public static string RemoveCharFromString(string input, char charItem)
    {
        int indexOfChar = input.IndexOf(charItem);
        if (indexOfChar < 0)
        {
            return input;
        }
        return RemoveCharFromString(input.Remove(indexOfChar, 1), charItem);
    }

答案 7 :(得分:1)

总是困扰我,我不能使用 String.Remove 方法来摆脱字符串或字符串中字符的实例,所以我通常将这些扩展方法添加到我的代码库中:

public static class StringExtensions
{
    public static string Remove(this string str, string toBeRemoved)
    {
        return str.Replace(toBeRemoved, "");
    }

    public static string RemoveChar(this string str, char toBeRemoved)
    {
        return str.Replace(toBeRemoved.ToString(), "");

    }
}

不幸的是,采用 char 的那个不能使用重载语义,因为它会解析为 string.Remove(int startIndex),因为它是 "closer"

这当然是纯粹的美学,但我喜欢它......