当前位置: 首页 > 面试题库 >

如何检测Java字符串中的unicode字符?

邓丰
2023-03-14
问题内容

假设我有一个包含Ü的字符串。我将如何找到所有这些unicode字符?我应该测试他们的代码吗?我该怎么做?

例如,给定字符串“AÜXÜ”,我想将其转换为“ AYXY”。我想对其他unicode字符执行相同的操作,并且我不希望将它们存储在某种翻译图中。


问题答案:

“ unicode字符”的定义含糊不清,但是将被视为表示标准ISO
8859字符集
未涵盖的UTF-8
字符。如果您的情况是这样,那么请遍历String中的所有字符并测试其代码点以确定它是否在给定的字符集中。

或者,Map<Character, Character>在地图中使用和字符,其中包含匹配键。例如:

Map<Character, Character> charReplacementMap = new HashMap<Character, Character>() {{
    put('Ü', 'Y');
    // Put more here.
}};

String originalString = "AÜAÜ";
StringBuilder builder = new StringBuilder();

for (char currentChar : originalString.toCharArray()) {
    Character replacementChar = charReplacementMap.get(currentChar);
    builder.append(replacementChar != null ? replacementChar : currentChar);
}

String newString = builder.toString();

或者,您是说“所有带有变音符号的字符”吗?如果是这样,则用于java.text.Normalizer删除变音标记:

/**
 * Remove any diacritical marks (accents like ç, ñ, é, etc) from
 * the given string (so that it returns plain c, n, e, etc).
 * @param string The string to remove diacritical marks from.
 * @return The string with removed diacritical marks, if any.
 */
public static String removeDiacriticalMarks(String string) {
    return Normalizer.normalize(string, Form.NFD)
        .replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}

有一个陷阱,Ü会变成U,而不是Y。不确定那是否是您所追求的。如果要用发音字符代替,则确实需要创建映射。当然,这是一件乏味的工作,但是完成该工作所需的时间少于您遵循此主题所需的时间。



 类似资料:
  • 问题内容: 如果我有一个PHP字符串,如何有效地确定它是否至少包含一个非ASCII字符?所谓非ASCII字符,是指不属于此表的任何字符,http://www.asciitable.com/,其位置为32-126(含)。 因此,它不仅必须是ASCII表的一部分,而且还必须是可打印的。我想检测一个包含至少一个不符合这些规范的字符的字符串(不可打印的ASCII字符或完全不同的字符,例如不属于该表的Uni

  • 问题内容: 我有一个输入String说。许多浏览器/ IDE /应用程序都会检测到字符串的url部分,并自动添加锚点。这样就变成了。 我需要使用Java进行相同的操作。 问题答案: 为此使用java.net.URL! 嘿,为什么不对这个“ java.net.URL”使用Java的核心类,而让它验证URL。 尽管以下代码违反了“仅在特殊情况下使用异常”这一黄金原则,但对Java平台上已经成熟的某些东

  • 问题内容: 这个问题看起来很尴尬,但我一直找不到答案。 与下面的C#代码行等效的PHP是什么? 此示例创建一个带有单个Unicode字符的字符串,该字符串的“ Unicode数值”为十六进制的1000(十进制的4096)。 也就是说,在PHP中,如何创建一个具有“ Unicode数值”已知的Unicode字符的字符串? 问题答案: 因为JSON直接支持语法,所以我想到的第一件事是: 另一种选择是使

  • 问题内容: 在我的应用程序中,我从LDAP获取用户信息,有时完整的用户名使用了错误的字符集。例如: 它也可以是英语或俄语,并可以正确显示。如果用户名更改,它将在数据库中更新。即使我更改数据库中的值,它也无法解决问题。 我可以在保存之前修复此问题 但是,如果我将它用于包含俄语字符的字符串(例如,“Тест61Тестович61”),则会得到类似“ ??? 61 ??????? 61”的信息。 您能

  • 问题内容: 我读取了大约1000个文件名,其中一些文件以UTF8编码,而某些文件为CP1252。 我想将它们全部解码为Unicode,以便在脚本中进行进一步处理。有没有一种方法可以使源编码正确解码为Unicode? 例: 问题答案: 如果您的文件位于和中,则有一种简单的方法。 否则,有一个字符集检测库。 Python-检测字符集并转换为utf-8 https://pypi.python.org/p

  • 问题内容: 我正在努力获取unicode字符串的计数,并尝试了各种选择。看起来像是一个小问题,但却大有作为。 在这里,我试图获取字符串str1的长度。我得到的是6。但实际上是3。将光标移到字符串“குமார்”上还会显示为3个字符。 基本上我想测量长度并打印每个字符。如“கு”,“மா”,“ர்”。 PS:这是泰米尔语。 问题答案: 找到了解决您问题的方法。 基于这个SO答案,我制作了一个使用正则