方法错误没有重载

时间:2009-11-20 17:10:53

标签: c# replace overloading

public static class StringHelper 
{
  public static string HyphenAndSpaceReplacer(this string s) 
  {
    string newString = s;
    newString.Replace(char.Parse(" ", "_"));
    newString.Replace(char.Parse("-", "_"));

    return newString;
  }
}

错误:

  1. 方法'Parse'没有重载需要'2'参数
  2. 方法'Replace'没有重载需要'1'参数
  3. 我正在尝试使用上面的代码用文件名中的下划线替换空格和连字符,但我不断收到这些错误。请告诉我我错过了什么,或者它是完全错误的。

4 个答案:

答案 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;
    }
}