C#中的替换方法不适用于个别角色?

时间:2011-03-06 01:51:18

标签: c# string replace

我一直在环顾四周,好像我正在使用它,但结果却失败了。我想通过并删除任何0并用o替换它们。

newString = strOld.Replace('0', 'o'); // doesn't work.

newString = strOld.Replace("0", "o"); // doesn't work either.  

我做错了吗?

6 个答案:

答案 0 :(得分:2)

我做了这个测试,它运行正常:

class Program
{
    static void Main(string[] args)
    {
        var newString = "M0000".Replace('0', 'o');
    }
}

尝试一个类似于我创建的小测试用例,看看会发生什么。

答案 1 :(得分:2)

结果是为了使用替换方法,它必须进入相同的字符串。所以虽然这不起作用:

String newString;

String oldString = "b00k";

newString = oldString.Replace('0', 'o');

这将有效:

String newString = "b00k";

newString = newString.Replace('0', 'o');

Appreciate all the feedback.

答案 2 :(得分:1)

我遇到了同样的问题,实际上只是为了获取信息,我正在做一些像myOldString.Replace("#", "No.");这样的事情。 它没有用,我查了一下。 最后我找到了解决方案,当我将上面的字符串替换为 myOldString = myOldString.Replace("#","No"); string.replace创建一个副本,早些时候我没有将它分配给实际的字符串。 确保你没有这样做

答案 3 :(得分:0)

在这里工作得很好......如果它们是字母的话,char版本应该可以工作(我假设你试图用小写字母O替换零)。你是否可能使用的字体不区分零和字母O或类似的东西?

答案 4 :(得分:0)

你没有做错任何事。如果你想做一个字符替换而不是字符串替换,你需要做:s.Replace(char.Parse("0"), char.Parse("o")),但我想不出你的代码不起作用的任何原因。

答案 5 :(得分:0)

以下链接非常清楚地显示了这一点:http://www.dotnetperls.com/replace 如果你使用string.Replace,则必须分配它(如上面Geeklat所述):

String newString = "b00k";
newString = newString.Replace('0', 'o');

如果您使用" StringBuilder"变量不必分配 - 这是一个示例程序(输出如下):

using System;
using System.Text;
class Program
    {
    static void Main()
    {
    const string s = "This is an example.";

    // A
    // Create new StringBuilder from string
    StringBuilder b = new StringBuilder(s);
    Console.WriteLine(b);

    // B
    // Replace the first word
    // The result doesn't need assignment
    b.Replace("This", "Here");
    Console.WriteLine(b);

    // C
    // Insert the string at the beginning
    b.Insert(0, "Sentence: ");
    Console.WriteLine(b);
    }
}

输出:

This is an example.
Here is an example.
Sentence: Here is an example.