2016-04-21 132 views
1

我想要統計我的字符數組中有多少特殊字符。查找我的字符數組中的特殊字符數

這是我到目前爲止的代碼:

String s = "hi .this :) is test +line"; 
int len = s.length(); 
Character[] array = new Character[len]; 

for (int i = 0; i < len ; i++) 
{ 
    if(array[i]==' ' || array[i]==':' || array[i]=='.' || array[i]=='\'' || array[i]=='\"' || array[i]==')') 
    special_chars++ 
} 
+4

究竟是什麼被認爲是特殊字符? –

回答

3

可以使用Character類的方法。

if(!Character.isLetterOrDigit(array[i]) && !Character.isWhitespace(array[i])) 
    special_chars++; 

Character.isLetterOrDigit檢查字符是字母還是數字。如果它沒有,那肯定是一個特殊的角色!

+0

我認爲方法名稱是自解釋性的:) – svarog

+0

我想這取決於特定字符的定義是什麼。例如,連字符或逗號是否被認爲是特殊字符? – user2366842

+0

@svarog是的。但我認爲沒有它,似乎我沒有解釋我的答案! – Hackerdarshi

2

創建一個String您的特殊字符,遍歷輸入中的每個字符,並檢查它是否在String的特殊字符中。喜歡的東西,

String s = "hi .this :) is test +line"; 
String spec = " :.'\")"; 
int special_chars = 0; 
for (char ch : s.toCharArray()) { 
    if (spec.indexOf(ch) > -1) { 
     special_chars++; 
    } 
} 
1

使用BitSet,可以有效地設置和檢查索引的二進制信息(在你的情況:一個給定的字符是否是特殊或沒有),所以比起在這個線程你沒有其他解決方案需要遍歷一組特殊字符:

BitSet specialCharacters = new BitSet(); 
specialCharacters.set(' '); 
specialCharacters.set(':'); 
specialCharacters.set('.'); 
specialCharacters.set('\''); 
specialCharacters.set('\"'); 
specialCharacters.set(')'); 

String text = "hi .this :) is test +line"; 
for (char c : text.toCharArray()) { 
    if (specialCharacters.get(c)) { 
     // special character detected 
    } 
}