Java, как я могу добавить акцентированное «е» в строку? - PullRequest
4 голосов
/ 18 апреля 2010

С помощью tucuxi из существующего поста Java удаляет HTML из String без регулярных выражений Я создал метод, который будет анализировать любые основные теги HTML из строки. Однако иногда оригинальная строка содержит шестнадцатеричные символы html, такие как & # x00E9 (это ударение на e). Я начал добавлять функциональность, которая будет переводить эти экранированные символы в реальные символы.

Вы, вероятно, спрашиваете: почему бы не использовать регулярные выражения? Или сторонняя библиотека? К сожалению, я не могу, так как я работаю на платформе BlackBerry, которая не поддерживает регулярные выражения, и мне никогда не удавалось успешно добавить стороннюю библиотеку в мой проект.

Итак, я дошел до того, что любой & # x00E9 заменяется на "е". Мой вопрос сейчас заключается в том, как мне добавить фактическое «акцентированное е» в строку?

Вот мой код:

публичная статическая строка removeHTML (синопсис строки) {

char[] cs = synopsis.toCharArray();
  String sb = new String();
  boolean tag = false;
  for (int i = 0; i < cs.length; i++) {
   switch (cs[i]) {
   case '<':
    if (!tag) {
     tag = true;
     break;
    }
   case '>':
    if (tag) {
     tag = false;
     break;
    }
   case '&':

    char[] copyTo = new char[7];
    System.arraycopy(cs, i, copyTo, 0, 7);

    String result = new String(copyTo);

    if (result.equals("&#x00E9")) {
     sb += "e";
    }

    i += 7;
    break;
   default:
    if (!tag)
     sb += cs[i];
   }
  }

  return sb.toString();
 }

Спасибо!

Ответы [ 4 ]

5 голосов
/ 18 апреля 2010

Java Строки в юникоде.

sb += '\u00E9';   # lower case  e + '
sb += '\u00C9';   # upper case  E + '
2 голосов
/ 18 апреля 2010

Вы можете распечатать практически любой символ, который вам нравится в Java, так как он использует набор символов Unicode.

Чтобы найти нужного вам персонажа, взгляните на диаграммы здесь:

http://www.unicode.org/charts/

В документе латинского дополнения вы увидите все номера Unicode для акцентированных символов. Например, вы должны увидеть шестнадцатеричное число 00E9, указанное для é. Цифры для всех символов латинского акцентирования приведены в этом документе, поэтому вы должны найти это довольно полезным.

Чтобы напечатать использование символа в строке, просто используйте escape-последовательность Unicode \ u, за которой следует код символа, например:

System.out.print("Let's go to the caf\u00E9");

выдаст: "Пойдем в кафе"

В зависимости от того, какую версию Java вы используете, вы можете найти StringBuilders (или StringBuffers, если вы многопоточный) более эффективным, чем использование оператора + для объединения строк.

0 голосов
/ 06 июля 2018

Для таблицы символов с ударением в Java посмотрите эту ссылку .

Для декодирования HTML-части используйте Apache StringEscapeUtils из Apache commons lang :

import org.apache.commons.lang.StringEscapeUtils; ... String withCharacters = StringEscapeUtils.unescapeHtml(yourString);

Смотрите также этот поток переполнения стека: Заменить HTML-коды эквивалентными символами в Java

0 голосов
/ 18 апреля 2010

попробуйте это:

  if (result.equals("&#x00E9")) {
     sb += char(130);
    }

вместо

  if (result.equals("&#x00E9")) {
     sb += "e";
    }

Дело в том, что вы не добавляете ударение к вершине символа 'e', ​​а скорее это отдельный символ вместе. На этом сайте перечислены коды ascii для символов.

...