2009-11-20 58 views
0
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. 沒有過載對方法 '解析' 取 '2' 參數
  2. 沒有過載對方法 '替換' 取 '1' 的參數

我試圖用上面的代碼片段替換空格和連字符與文件名中的下劃線,但我不斷收到這些錯誤。請告訴我我錯過了什麼,或者它是完全錯誤的。

回答

0

請嘗試以下

newString = newString.Replace(' ', '_'); 
newString = newString.Replace('-', '_'); 

的Char.Parse方法是沒有必要在這裏。要使用字符簡單地使用「語法,而不是」。

此外,在C#(CLR)字符串是不可變的這麼看你需要分配回newString更換的結果。

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

     return newString; 
    } 
} 

記住,字符串是不變的,所以你需要分配回替換字符串變量的結果。這不是爲什麼你雖然得到了錯誤,但只是要記住。

+0

你也可以連接在一起.Replace()調用,如果你喜歡: newString = newString.Replace(」」, 「_」)。REPLACE( 「 - 」 ,「_」); – scwagner

+0

這工作thanx很多! – jason

0

字符串是不可變的。你只需要:

public static class StringHelper 
{ 
    public static string HyphenAndSpaceReplacer(this string s) 
    { 
     return s.Replace(' ', '_').Replace('-', '_'); 
    } 
} 
0

爲了提高在貝麗的實現

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