java.text.Collat​​or 用于字符串比较。,

标签 java string

尝试使用 Collat​​ors 来验证几个 String 对象。,这是代码。,

String myBubbleStr[] = {"zoon", "Hello", "World", "Yep", "Yow", "MyData"};
    public void testCollatorStrings() {
        Collator collator = Collator.getInstance();
        String toCompare = "yow";
        for (String collatorCompare : myBubbleStr) {
            System.out.println(collator.compare(collatorCompare, toCompare));

        }
    }

我对输出的期望是-1,-1,-1,-1,1,-1。 根据documentation

Returns an integer value. Value is less than zero if source is less than target, value is zero if source and target are equal, value is greater than zero if source is greater than target.

但是我得到的输出是

1 -1 -1 -1 1 -1

有人可以帮忙吗,如何进行此验证。,使用排序器的原因是为了克服字符串比较的 unicode 限制。谢谢。,

最佳答案

输出看起来正确,因为由 Collat​​or 的特定实例生成的排序规则仅考虑字母的大小写来打破平局。

  • zoon 按字母顺序位于 yow 之后,因此返回值应为 1
  • Hello 按字母顺序位于 yow 之前,因此返回值应为 -1
  • World 按字母顺序位于 yow 之前,因此返回值应为 -1
  • Yep 按字母顺序位于 yow 之前,因此返回值应为 -1
  • Yow 与按字母顺序排列的 yow 相同,但以大写字母开头,因此返回值应为 1
  • MyData 按字母顺序位于 yow 之前,因此返回值应为 -1

您可以降低整理器的强度,以使仅在大小写不同的情况下评估为相同的字符串。

关于java.text.Collat​​or 用于字符串比较。,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18089681/

相关文章:

java - Eclipse 类未在特定工作区中编译

java - 泛型用法和 Java 标准

java - Camel 单元测试设置了对模拟组件的期望

java - 为什么 axistools-maven-plugin 试图访问这个相对模式位置?

c - 使用指针从字符串中删除空格

c++ - 修剪空格/转换迭代器

java - 如果我将一个类的默认构造函数声明为私有(private),为什么它不能被子类化

javascript - 类型错误:字符串不是函数

Ruby:将字符串中的所有整数递增+1

php - 用 JavaScript 实现 PHP 字符串异或