如何比较 Smalltalk 中的本地化字符串?
How to compare localized strings in Smalltalk?
是否可以比较某些 Smalltalk 实现中的本地化字符串?目前为止我遇到的只有 Pharo 和 GNU ST,它们似乎都缺乏这种能力。似乎唯一的可能性是从头开始编写一个 ICU 包装器。 (这远远超出了我的经验。)
我知道这是一个复杂的功能。不幸的是,到处都需要它,例如,在网络应用程序中排序菜单。
我的意思是:
'á' > 'a' => true
以及使用比较对字符串数组进行排序的可能性:
#('č' 'ř' 'a' 'r' 'á') asSortedCollection => #('a' 'á' 'č' 'r' 'ř')
我不会说其他方言,但是GemStone确实有这个能力:
topaz 1> run
'á' > 'a'
%
true
topaz 1> run
#('č' 'ř' 'a' 'r' 'á') asSortedCollection printString
%
aSortedCollection( 'a', 'á', '\u010d', 'r', '\u0159')
topaz 1>
有关详细信息,请参阅 Programmer's Guide。
从 NativeBoost(Pharo 4 中使用的旧 FFI 样式)转换为 UFFI 应该很简单。代码是on the gemstone repo。最简单的方法是
首先确保您可以 运行 在 Launcher 中使用已弃用版本的旧 Pharo 4 并验证它是否适合您。您可能需要安装 32 位库才能正常工作(或使用类似 32 位虚拟盒图像的东西)。独立于 NativeBoost 的包在 Pharo 8 中加载。有一个关于 UFFI
的 booklet
我会说 Smalltalk/X-jv branch 方言。如果我没记错的话 Smalltalk/X 本身就是 Unicode。
你的例子自然会给出你的结果。这是 Workspace
的直接粘贴(为了更好的可读性,在打印值之间添加 space):
'á' > 'a' true.
#('č' 'ř' 'a' 'r' 'á') asSortedCollection SortedCollection('a' 'r' 'á' 'č' 'ř')
是否可以比较某些 Smalltalk 实现中的本地化字符串?目前为止我遇到的只有 Pharo 和 GNU ST,它们似乎都缺乏这种能力。似乎唯一的可能性是从头开始编写一个 ICU 包装器。 (这远远超出了我的经验。)
我知道这是一个复杂的功能。不幸的是,到处都需要它,例如,在网络应用程序中排序菜单。
我的意思是:
'á' > 'a' => true
以及使用比较对字符串数组进行排序的可能性:
#('č' 'ř' 'a' 'r' 'á') asSortedCollection => #('a' 'á' 'č' 'r' 'ř')
我不会说其他方言,但是GemStone确实有这个能力:
topaz 1> run
'á' > 'a'
%
true
topaz 1> run
#('č' 'ř' 'a' 'r' 'á') asSortedCollection printString
%
aSortedCollection( 'a', 'á', '\u010d', 'r', '\u0159')
topaz 1>
有关详细信息,请参阅 Programmer's Guide。
从 NativeBoost(Pharo 4 中使用的旧 FFI 样式)转换为 UFFI 应该很简单。代码是on the gemstone repo。最简单的方法是 首先确保您可以 运行 在 Launcher 中使用已弃用版本的旧 Pharo 4 并验证它是否适合您。您可能需要安装 32 位库才能正常工作(或使用类似 32 位虚拟盒图像的东西)。独立于 NativeBoost 的包在 Pharo 8 中加载。有一个关于 UFFI
的 booklet我会说 Smalltalk/X-jv branch 方言。如果我没记错的话 Smalltalk/X 本身就是 Unicode。
你的例子自然会给出你的结果。这是 Workspace
的直接粘贴(为了更好的可读性,在打印值之间添加 space):
'á' > 'a' true.
#('č' 'ř' 'a' 'r' 'á') asSortedCollection SortedCollection('a' 'r' 'á' 'č' 'ř')