找到我的Character数组中的特殊字符数

时间:2016-04-21 13:19:54

标签: java arrays

我想计算我的Character数组中有多少个特殊字符。

到目前为止,这是我的代码:

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++
}

3 个答案:

答案 0 :(得分:3)

您可以使用Character class。

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

Character.isLetterOrDigit检查字符是字母还是数字。如果不是,那肯定是一个特殊的角色!

答案 1 :(得分: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++;
    }
}

答案 2 :(得分: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
    }
}