Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换C#中的方法不适用于单个字符?_C#_String_Replace - Fatal编程技术网

替换C#中的方法不适用于单个字符?

替换C#中的方法不适用于单个字符?,c#,string,replace,C#,String,Replace,我一直在四处寻找,似乎我在正确地使用它,但结果是失败的。我想通过检查,去掉任何0,并用o替换它们 newString = strOld.Replace('0', 'o'); // doesn't work. newString = strOld.Replace("0", "o"); // doesn't work either. 我做错什么了吗?在这里很好用。。。char版本应该可以工作,无论它们是字母还是大小写(我假设您试图用小写的O替换零)。您是否使用了不区分零和字母O的字体或类似的

我一直在四处寻找,似乎我在正确地使用它,但结果是失败的。我想通过检查,去掉任何0,并用o替换它们

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

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

我做错什么了吗?

在这里很好用。。。char版本应该可以工作,无论它们是字母还是大小写(我假设您试图用小写的O替换零)。您是否使用了不区分零和字母O的字体或类似的字体?

您没有做错任何事情。如果您想执行字符替换而不是字符串替换,则需要执行:
s.replace(char.Parse(“0”)、char.Parse(“o”)
,但我想不出您的代码不起作用的任何原因。

我进行了此测试,效果良好:

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

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

为了使用replace方法,它必须进入相同的字符串。因此,尽管这不起作用:

String newString;

String oldString = "b00k";

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

这将有助于:

String newString = "b00k";

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

Appreciate all the feedback.

我也面临着同样的问题,实际上只是为了获取信息,我在做一些事情,比如
myOldString.Replace(“#“,“No.”)。
它坏了,我检查过了。
当我将上面的字符串替换为
myOldString=myOldString.Replace(“#“,“否”)
string.replace生成一个副本,之前我没有将其分配给实际字符串。

请确保您没有进行此类测试。以下链接非常清楚地显示了这一点: 如果使用string.Replace,则必须对其进行赋值(如Geeklat所述):

如果使用“StringBuilder”,则不必指定变量- 下面是一个示例程序(输出如下所示):

输出:

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

您是否有任何示例数据表明这不起作用?是的,您是否运行不同的区域性/区域设置?Replace方法是基于顺序的,但不区分区域性。你能举一个方法失败的
strOld
的例子吗?嗯,用小写o替换0与用字母M替换数字4一样有意义。你确定要这样做吗?你能解释一下“不起作用”的具体含义吗?这个程序是为了检查并防止用户使用包括字典单词在内的错误密码。当人们尝试使用b00k时,我希望程序失败,因为b00k仍然是一个字典单词,很容易被破解。除了创建字符串并将其解析回字符的额外开销之外,s.Replace('0','o')还有什么作用呢?什么都没有。但是你的问题是要替换一个单独的字符,我想说的很透彻。听起来像是真正的问题,你的代码使用了错误的变量。
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.