2012-07-25 51 views
0

我基本上在尋找一種方法來檢查某個字符串是否包含任何特定的字符列表,如果包含其中的一個來分割字符串,然後在它後面插入相同的字符infront /。這是因爲由於SQL處理不好,這些特定的字符在輸入時會破壞​​我的搜索。從數組中查找char,然後插入另一個char

這是我多遠其實走到這一步:

string[] errorChars = new string[] 
{ 
    "!", 
    "}", 
    "{", 
    "'", 
}; 

for (int i = 0; i < errorChars.Count(); i++) 
{ 
    if(fTextSearch.Contains(errorChars[i])) 
    { 
    } 
} 
+0

讓我看看我的理解:「˚FØ} o」的指定的一個字符串,你想將它拆分到f中! o}和o?我不確定我是否完全理解 - 如果這是你想要完成的,那麼你可以使用String.Split方法。 – Daniel 2012-07-25 12:40:01

+0

'拆分字符串並在其之前和之後插入'可能意味着很多事情。你爲什麼不給我們一個預期的輸入和輸出的例子。 – 2012-07-25 12:40:25

+1

可能http://stackoverflow.com/questions/995478/sql-server-full-text-search-escape-characters會有所幫助。 – GSerg 2012-07-25 12:40:40

回答

1

有幾個答案(以他們目前的移交)的問題是,他們都在不斷下降的分裂性格。如果你需要保持你的分裂性格,試試這個:

StringBuilder sb = new StringBuilder(); 

string[] splitString = fTextSearch.Split(errorChars, StringSplitOptions.None); 

int numNewCharactersAdded = 0; 
foreach(string itm in splitString) 
{ 
    sb.Append(itm); //append string 
    if (fTextSearch.Length > (sb.Length - numNewCharactersAdded)) 
    { 
     sb.Append(fTextSearch[sb.Length - numNewCharactersAdded]); //append splitting character 
     sb.Append(fTextSearch[sb.Length - numNewCharactersAdded - 1]); //append it again 
     numNewCharactersAdded ++; 
    } 
} 

fTextSearch = sb.ToString(); 

下面是一個IDEOne example

+0

唯一的問題是,我不希望「替換」這個角色,但更多的是在它旁邊添加相同的字符,所以有兩個這樣的字符(因爲這會導致字符在SQL停止錯誤) – 2012-07-25 12:52:52

+0

哦,你只是想複製你找到的任何字符? – 2012-07-25 12:55:41

+0

非常多,如果您在SQL查詢中重複字符,它會轉義它們。 – 2012-07-25 12:57:11

1

我認爲我們真正希望的是替換功能。

for (int i = 0; i < errorChars.Count(); i++) 
{ 
    if(fTextSearch.Contains(errorChars[i])) 
    { 
     fTextSearch.Replace(errorChars[i],errorChars[i] + errorChars[i]); 
    } 
} 

雖然加倍字符可能不是答案。您需要轉義字符被\所以替換字符串將

ftextSearch.Replace(errorChars[i],"\"+errorChars[i]); 
相關問題