public static class StringHelper
{
public static string HyphenAndSpaceReplacer(this string s)
{
string newString = s;
newString.Replace(char.Parse(" ", "_"));
newString.Replace(char.Parse("-", "_"));
return newString;
}
}
错误:
我正在尝试使用上面的代码用文件名中的下划线替换空格和连字符,但我不断收到这些错误。请告诉我我错过了什么,或者它是完全错误的。
答案 0 :(得分:3)
public static class StringHelper
{
public static string HyphenAndSpaceReplacer(this string s)
{
string newString = s;
newString = newString.Replace(" ", "_");
newString = newString.Replace("-", "_");
return newString;
}
}
请记住,字符串是不可变的,因此您需要将Replace的结果分配回字符串变量。这不是你得到错误的原因,而是要记住的事情。
答案 1 :(得分:0)
尝试以下
newString = newString.Replace(' ', '_');
newString = newString.Replace('-', '_');
此处不需要Char.Parse方法。要使用char,只需使用'语法而不是“。
此外,C#(CLR)中的字符串是不可变的,因此要查看替换的结果,需要将其分配回newString。
答案 2 :(得分:0)
字符串是不可变的。你只需要:
public static class StringHelper
{
public static string HyphenAndSpaceReplacer(this string s)
{
return s.Replace(' ', '_').Replace('-', '_');
}
}
答案 3 :(得分:0)
改进BFree的实施
public static class StringHelper
{
public static string HyphenAndSpaceReplacer(this string s)
{
//Only process if certain criteria are met
if(s != null || s != string.Empty ||s.contains(' ') || s.contains('-')
{
string newString = s;
newString = newString.Replace(" ", "_");
newString = newString.Replace("-", "_");
return newString;
}
//else just return the string
return s;
}
}