2012-07-25 49 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]); 
相关问题