2016-04-21 4 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 
    } 
} 
Смежные вопросы