【问题标题】:Java how can I add an accented "e" to a string?Java如何在字符串中添加重音“e”?
【发布时间】:2011-02-09 07:22:30
【问题描述】:

在现有帖子Java remove HTML from String without regular expressions 的tucuxi 的帮助下,我构建了一个方法,可以从字符串中解析出任何基本的HTML 标记。但是,有时原始字符串包含 html 十六进制字符,例如 é(它是重音 e)。我已经开始添加将这些转义字符转换为真实字符的功能。

您可能会问:为什么不使用正则表达式?还是第三方库?不幸的是,我不能,因为我在不支持正则表达式的 BlackBerry 平台上进行开发,而且我从未能够成功地将第三方库添加到我的项目中。

所以,我已经到了将任何 é 替换为“e”的地步。我现在的问题是,如何将实际的“重音 e”添加到字符串中?

这是我的代码:

public static String removeHTML(String synopsis) {

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();
 }

谢谢!

【问题讨论】:

  • @Joel:我也在想同样的事情......

标签: java html parsing character diacritics


【解决方案1】:

Java 字符串是 unicode。

sb += '\u00E9';   # lower case  e + '
sb += '\u00C9';   # upper case  E + '

【讨论】:

【解决方案2】:

您可以在 Java 中打印出您喜欢的任何字符,因为它使用 Unicode 字符集。

要找到您想要的角色,请查看此处的图表:

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

在拉丁文补充文档中,您将看到重音字符的所有 unicode 数字。例如,您应该看到为 é 列出的十六进制数字 00E9。所有拉丁重音字符的数字都在本文档中,因此您应该会发现这非常有用。

要打印字符串中的使用字符,只需使用 Unicode 转义序列 \u 后跟字符代码,如下所示:

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

会产生:“我们去咖啡馆吧”

根据您使用的 Java 版本,您可能会发现 StringBuilders(或 StringBuffers,如果您是多线程的)也比使用 + 运算符连接字符串更有效。

【讨论】:

    【解决方案3】:

    试试这个:

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

    而不是

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

    问题是您没有在“e”字符的顶部添加重音符号,而是将其作为一个单独的字符。这个site 列出了字符的ascii 代码。

    【讨论】:

      【解决方案4】:

      对于 Java take a look at this reference 中的重音字符表。

      要解码 html 部分,请使用来自 Apache commons lang 的 Apache StringEscapeUtils

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

      另请参阅此堆栈溢出线程: Replace HTML codes with equivalent characters in Java

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-01
        • 2012-02-23
        • 1970-01-01
        • 2016-07-19
        • 2012-03-19
        • 2019-06-28
        • 1970-01-01
        相关资源
        最近更新 更多