Проблема, обрезающая японскую строку в Java

Это будет работать:

String testpathb = fs.getAppHomePath()+"xxxtestb";
fs.mkdir(testpathb);
String testpathC = fs.getAppHomePath()+"xxxtest/";
fs.mkdir(testpathC);
5
задан Fabian Steeg 28 January 2009 в 00:06
поделиться

5 ответов

Как альтернатива StringUtils класс, упомянутый Mike, можно также использовать осведомленное о Unicode регулярное выражение, с помощью только собственными библиотеками Java:

" ユーザー名".replaceAll("\\p{Z}", "")

Или, чтобы действительно только обрезать и не удалить пробел в строке:

" ユーザ ー名 ".replaceAll("(^\\p{Z}+|\\p{Z}+$)", "")
7
ответ дан 18 December 2019 в 09:10
поделиться

Взгляните на Нормализацию Unicode и класс Нормализатора. Класс является новым в Java 6, но Вы найдете эквивалентную версию в библиотеке ICU4J, если Вы будете на более раннем JRE.

    int character = 12288;
    char[] ch = Character.toChars(character);
    String input = new String(ch);
    String normalized = Normalizer.normalize(input, Normalizer.Form.NFKC);

    System.out.println("Hex value:\t" + Integer.toHexString(character));
    System.out.println("Trimmed length           :\t"
            + input.trim().length());
    System.out.println("Normalized trimmed length:\t"
            + normalized.trim().length());
4
ответ дан 18 December 2019 в 09:10
поделиться

Попробуйте палаты общин Apache класс StringUtils. StringUtils.strip () метод должен работать на Вас.

3
ответ дан 18 December 2019 в 09:10
поделиться

Необходимо будет записать собственное trim() метод на основе Character.isWhitespace() - к сожалению, trim() не делает то, чего требует его документ API: это разделяет только пробелы ASCII, не любой другой вид пробела.

2
ответ дан 18 December 2019 в 09:10
поделиться

Из документов Java это объясняет, почему это не работает.

Если этот Строковый объект представляет пустую последовательность символов, или первые и последние символы последовательности символов, представленной этой Строкой, возражают, что у обоих есть коды, больше, чем '\u0020' (пробел), то ссылка на этот Строковый объект возвращается.

Вы могли роль Ваша собственная версия достаточно легко. возможно, метод codePointAt мог использоваться с этой целью.

http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html

2
ответ дан 18 December 2019 в 09:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: