2011-06-04 204 views
1

字符串比較我有特殊字符的字符串如無特殊字符

"ravi", "Ravi" ,"!ravi","ravi...","RaVi)" etc.. 

我希望所有這些被視爲相同。如何實現這一點。 可以在shell腳本中,C,C++,JAVA。

感謝, 拉維。

回答

3

的Java:str.toLowercase().replace("[^a-zA-Z]", "")將使他們都在小寫字母與特殊字符刪除,因此所有equal()

編輯面面俱到字母爲「特殊」

+0

可能更好地使用正則表達式從而消除任何的OP不希望(例如,'[^ A-ZA-Z]')。當然,這取決於OP_does_想要哪個字符範圍,這在問題中是不明顯的。 – jtahlborn 2011-06-04 13:30:22

+1

刪除'toLowercase()'與'equalIgnoreCase(比較)'或只是刪除'AZ'在正則表達式 – 2011-06-04 15:07:01

+0

是頂替將使* 「早晨」 *同等對待爲*「)M *#$%)_哦!@ #$ R)(&N(*&^ I(&%*%N(*&!#$ g_01241" *,我不知道這是OP想要什麼:) – SyntaxT3rr0r 2011-06-04 17:58:02

5

在C我在一個循環中使用isalpha,處理字符串之前去除不需要的字符。

#include <ctype.h> 

/* ... */ 

loop { 
    if (isalpha((unsigned char)*src)) *dst++ = *src; 
    src++; 
} 
+1

我們還需要'tolower的(* SRC)' – phoxis 2011-06-05 02:28:09

0

使用找到功能使用C++中的字符串來查找您的案例「ravi」中的子字符串的發生。

size_t find (const string& str, size_t pos = 0) const; 

它會返回您在主字符串中的子字符串的起始索引。

通過利用這些信息,你可以操縱字符串按照您的要求。

More on string::find