Как определить управляющий символ (например, 0x0A (перевод строки)) с помощью Java?
Мне нужно посчитать количество контрольных символов из текстового документа.
2 ответа
Переберите свой вводимый символ за символом и сравните порядковый номер символа с контрольными символами, определенными в стандарте ASCII. Если у вас есть совпадение, увеличьте счетчик.
Редактировать:
String input = "325\nfefe\rw2";
int normalCount = 0;
int controlCount = 0;
for (int i = 0; i < input.length(); ++i) {
int characterCode = (int)input.charAt(i);
if (characterCode == 10 || characterCode == 13) { // Match \n and \r
++controlCount;
}
else {
++normalCount;
}
}
System.out.println("The input contains:");
System.out.println("\t" + normalCount + " printable characters");
System.out.println("\t" + controlCount + " control characters");
Даст вам этот вывод:
The input contains:
9 printable characters
2 control characters
Возможно, вы найдете полезным метод isISOControl из класса Character. Он возвращает true, если символ является управляющим.
Предположим, что temp — это String, а counter — это int, где вы хотите иметь общее количество управляющих символов в строке, что-то вроде этого может помочь:
for (int i=0,counter=0;i<temp.length();i++) {
if (!Character.isISOControl(temp.charAt(i))) {
counter++;
}
}