Spec-Zone .ru
спецификации, руководства, описания, API
След: Интернационализация
Урок: Работа с текстом
Раздел: Unicode
Конструктивные соображения
Домашняя страница > Интернационализация > Работа с текстом

Конструктивные соображения

Чтобы записать код, который работает легко на любой язык, используя любой сценарий, есть несколько вещей иметь в виду.

Рассмотрение Причина
Избегите методов, которые используют char тип данных. Избегайте использования char примитивный тип данных или методы, которые используют char тип данных, потому что код, который использует тот тип данных, не работает на дополнительные символы. Для методов, которые берут a char введите параметр, используйте соответствие int метод, где доступный. Например, используйте Character.isDigit(int) метод, а не Character.isDigit(char) метод.
Используйте isValidCodePoint метод, чтобы проверить значения кодовой точки. Кодовая точка определяется как int тип данных, который учитывает значения за пределами допустимого диапазона значений кодовой точки от 0x0000 до 0x10FFFF. По причинам производительности методы, которые принимают значение кодовой точки в качестве параметра, не проверяют законность параметра, но можно использовать isValidCodePoint метод, чтобы проверить значение.
Используйте codePointCount метод, чтобы считать символы. String.length() метод возвращает число элементов кода, или 16-разрядный char значения, в строке. Если строка содержит дополнительные символы, количество может вводить в заблуждение, потому что это не будет отражать истинное число кодовых точек. Чтобы получить точное количество числа символов (включая дополнительные символы), используйте codePointCount метод.
Используйте String.toUpperCase(int codePoint) и String.toLowerCase(int codePoint) методы, а не Character.toUpperCase(int codePoint) или Character.toLowerCase(int codePoint) методы. В то время как Character.toUpperCase(int) и Character.toLowerCase(int) методы действительно работают со значениями кодовой точки, есть некоторые символы, которые не могут быть преобразованы на непосредственной основе. Строчный немецкий символ ß, например, становится двумя символами, SS, когда преобразовано в верхний регистр. Аналогично, маленький греческий символ Сигмы отличается в зависимости от позиции в строке. Character.toUpperCase(int) и Character.toLowerCase(int) методы не могут обработать эти типы случаев; однако, String.toUpperCase и String.toLowerCase методы обрабатывают эти случаи правильно.
Будьте осторожны, удаляя символы. Вызывая StringBuilder.deleteCharAt(int index) или StringBuffer.deleteCharAt(int index) методы, где индексировать точки к дополнительному символу, только первая половина того символа (первое char значение), удаляется. Во-первых, вызовите Character.charCount метод на символе, чтобы определить, если один или два char значения должны быть удалены.
Будьте осторожны, инвертируя символы в последовательности. Вызывая StringBuffer.reverse() или StringBuilder.reverse() методы на тексте, который содержит дополнительные символы, высокие и низкие суррогатные пары, инвертируются, который приводит к неправильному и возможно недопустимым суррогатным парам.

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Демонстрационное Использование
Следующая страница: Больше информации