【发布时间】:2013-07-27 05:46:19
【问题描述】:
在比较字符串时,维护一个在 Perl 和 Java 中提供相同排序规则的函数的最佳方法是什么?这是 Perl 中的示例函数:
sub compare_strs
{
my ( $str1, $str2 ) = @_;
# Treat vars as strings by quoting.
# Possibly incorrect/irrelevant approach.
return ("$str1" cmp "$str2");
}
这里的问题是:
【问题讨论】:
-
真的真的很难理解你在这里问什么。请举例说明您的顾虑。
-
我不确定我是否理解这个问题。您是否在问如何在 Perl 和 Java 中编写对 unicode 字符串进行排序的代码,并保证在 Perl 和 Java 实现中的顺序相同?
-
你为什么要引用这些变量,顺便说一句?你是什么意思可能包含Unicode字符?无论如何,如果你想要相同的排序规则,你应该使用排序规则模块。你不应该做按位等价或顺序:这在 Unicode 中真的没有意义。在 Perl 中使用 Unicode::Collate。
-
你还没有说出你对“预期结果”的看法,所以很难回答。我向你保证,一旦你的期望正确建立,Perl 就会给出预期的结果。我假设您希望根据 JIS X 0208 对日语进行排序,但是您想要六个中文排序规则中的哪一个,您打算如何混合这些排序规则?请参阅 Unicode::Collate::Locale 模块。
-
@tchrist 预期的结果只是很容易说出一个字符串是否小于另一个字符串,并让它适用于任何类型的字符集。让我对这些模块进行一些研究。