替换C#中的方法不适用于单个字符?
我一直在四处寻找,似乎我在正确地使用它,但结果是失败的。我想通过检查,去掉任何0,并用o替换它们替换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的字体或类似的
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.