gpt4 book ai didi

java - 如何构建具有不同 Unicode 字符的最长字符串

转载 作者:行者123 更新时间:2023-11-30 08:29:24 25 4
gpt4 key购买 nike

提前感谢您的耐心等待。这是我的问题。我正在用 Java 编写一个程序,它最适合处理大量不同的字符。我必须将所有字符存储在一个字符串中。我开始于私有(private)静态最终字符串值=“0123456789”;然后我添加了 A-Z、a-z 和所有公共(public)符号。但它们仍然太少,所以我认为 Unicode 可能是解决方案。

现在的问题是:获取可以在 Eclipse 中显示的所有 unicode 字符的最佳方法是什么(如果存在无法识别的字符,我的算法可能会失败——那些显示为小矩形的字符)。是否可以构建一个字符串(或一些字符串)并正确显示此处存在的所有字符 (en.wikipedia.org/wiki/List_of_Unicode_characters)?

我可以从 http://www.terena.org/activities/multiling/euroml/tests/test-ucspages1ucs.htmlhttp://zenoplex.jp/tools/unicoderange_generator.html 进行粗略的复制粘贴,但我希望能有一些更简洁的解决方案。我不知道是否有办法从字体(Unifont 字体)中提取字符。或者我应该解析这个 (www.utf8-chartable.de/unicode-utf8-table.pl) 网页。

此外,通过将所有字符添加到一个字符串中,我可能会得到错误:“该类型生成一个字符串,需要超过 65535 个字节才能在常量池中以 Utf8 格式进行编码”(在这个问题中讨论过:/questions/10798769/how-to-process-a-string-with-823237-characters ).

可以接受混合解决方案。我可以在 SO questions/4989091/removing-duplicates-from-a-string-in-java 上删除重复项)

最后:获得最长唯一不同字符字符串的每个解决方案都被接受。谢谢!

最佳答案

你把一些事情搞混了。一个字符在Eclipse中能否显示,取决于你选择的字体;能否正确处理源文件取决于你为源文件设置的字符编码。选择 UTF-8 和一个好的Unicode字体时,您可以使用和显示几乎所有字符,至少比单个 String 字面

拟合更多。

但是在Eclipse中真的需要显示字符吗?您可以使用 unicode 转义符,例如\u20ac 来引用字符,无论它们是否可以显示或文件编码是否可以处理它们。

如果不需要炸掉你的源代码,很容易创建一个包含所有现有字符的String:

// all chars (i.e. UTF-16 values)
StringBuilder sb=new StringBuilder(Character.MAX_VALUE);
for(char c=0; c<Character.MAX_VALUE; c++) sb.append(c);
String s=sb.toString();
// if it should behave like a compile-time constant:
s=s.intern();

// all unicode characters (aka code points)
StringBuilder sb=new StringBuilder(2162686);
for(int c=0; c<Character.MAX_CODE_POINT; c++) sb.appendCodePoint(c);
String s=sb.toString();
// if it should behave like a compile-time constant:
s=s.intern();

如果您不想让 String 只包含有效的 unicode 字符,您可以在循环内使用 if(Character.isDefined(c)) …。但这是一个移动的目标——较新的 JRE 很可能会知道更多定义的字符。

关于java - 如何构建具有不同 Unicode 字符的最长字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19454081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com