java - Java 中字符串的传统西类牙语排序

标签 java sorting locale

我正在将 .NET 应用程序转换为 Java。该应用程序读取具有以下格式的文件:

es-MX
jueves
verde
amarillo
blanco
llave
llover
loma
cinco
domingo
rojo

但我在弄清楚如何根据传统单词排序对西类牙语进行排序时遇到了麻烦。在 VB.NET 中,您会看到以下内容:

 Dim spainCultureTraditional As CultureInfo = New CultureInfo(&H40A)

但我在 Java 中找不到等效的传统排序语言环境。两者之间的唯一区别是,在 es-MX/es-ES 中,llavellover 将与国际排序进行切换。

注意:语言环境 es-ES 在 Java 中不一定相同,在 VB.NET 中也不同。

最佳答案

您可能需要自定义排序规则。这里有一个传统西类牙语的演示:

https://docs.oracle.com/javase/tutorial/i18n/text/rule.html

摘要代码:

String smallnTilde = "\u00F1";
String capitalNTilde = "\u00D1";

String traditionalSpanishRules = (
    "< a,A < b,B < c,C " +
    "< ch, cH, Ch, CH " +
    "< d,D < e,E < f,F " +
    "< g,G < h,H < i,I < j,J < k,K < l,L " +
    "< ll, lL, Ll, LL " +
    "< m,M < n,N " +
    "< " + smallnTilde + "," + capitalNTilde + " " +
    "< o,O < p,P < q,Q < r,R " +
    "< s,S < t,T < u,U < v,V < w,W < x,X " +
    "< y,Y < z,Z");

RuleBasedCollator spCollator = new RuleBasedCollator(traditionalSpanishRules);

Collections.sort(words, spCollator);
System.out.println(words);

关于java - Java 中字符串的传统西类牙语排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947700/

相关文章:

java - 在 shell 脚本中使用 JAVA 多行输出作为变量

scala - 如何按值升序对 Scala 映射进行排序?

algorithm - 查找链的比较器

algorithm - 为什么这种排序算法有效?

c++ - Facet.narrow() 在 utf-8 中不应使用的地方使用默认字符

Java Date 构造函数意外行为

java - 用java正则表达式替换大括号之间的特定文本

java - Java中删除重复的对象

java - 如何在 Spring 中显示下载文件名中的非法字符?

windows - 为什么不允许 UTF-8 作为 "ANSI"代码页?