Как определить управляющий символ (например, 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++;
        }
    }
Другие вопросы по тегам