gpt4 book ai didi

java - Perl 和 Java 中的 Unicode 比较

转载 作者:搜寻专家 更新时间:2023-11-01 02:47:52 26 4
gpt4 key购买 nike

在比较字符串时维护在 Perl 和 Java 中提供相同排序规则的函数的最佳方法是什么?这是 Perl 中的示例函数:

sub compare_strs
{
my ( $str1, $str2 ) = @_;
# Treat vars as strings by quoting.
# Possibly incorrect/irrelevant approach.
return ("$str1" cmp "$str2");
}

这里的问题是:

  • 字符串可以包含中文/日文字符。不能依赖上面的 Perl 代码来给出预期的结果。
  • 如何保证 Perl 和 Java 实现都能以相同的方式执行字符串排序?

  • 最佳答案

    对于 Perl,不要使用 cmp 运算符。相反,您应该使用 Unicode::Collate模块:

    use Unicode::Collate;
    sub compare_strs
    {
    my ( $str1, $str2 ) = @_;
    # Treat vars as strings by quoting.
    # Possibly incorrect/irrelevant approach.
    return $Collator->cmp("$str1", "$str2");
    }

    如果您担心规范化(例如,组合标记的顺序),您也可以使用 Unicode::Normalize模块。

    在 Java 中,使用 Collator类,如 tutorial on comparing strings 中所述.有关标准化,请参阅 tutorial on normalizing text . Java 1.6 中引入了所需的类;如果您需要支持早期版本的 Java,则需要使用类似 ICU libraries 的东西.

    使用上述适当的工具应确保两种环境的行为均符合 Unicode collation algorithm (因此彼此兼容)。

    关于java - Perl 和 Java 中的 Unicode 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17890112/

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