gpt4 book ai didi

mysql - Powershell 哈希表和重复键

转载 作者:行者123 更新时间:2023-11-29 11:45:55 28 4
gpt4 key购买 nike

我正在使用哈希表来存储一些希腊字符的名称和 ID。

    $hsNames = @{}
$hsNameID = 1

$name = "Νικος"

$hsNames.Add($name, $hsNameID)
$hsNameID++

$name = "Νίκος"
$hsNames.Add($name, $hsNameID)

$hsNames

上面的输出是:

Name                           Value      ----                           -----    Νικος                          1                                              Νίκος                          2   

这意味着当其中一个键中有希腊重音时,会为同一名称创建两个键。现在我不希望这种情况发生,我只需要一个带有第一个 ID (1) 的键 - MySQL 中 utf8_unicode_ci 的行为。我想我需要以某种方式告诉 powershell 在字符串比较中使用 Unicode 排序算法( http://www.unicode.org/reports/tr10/tr10-33.html )。但如何呢?

最佳答案

有趣的问题,尽管有人可能会说这两个名字不同因为口音。您必须决定是存储原始拼写和“规范化”拼写,还是仅存储规范化拼写,因为转换是一个单向过程。

我发现两个链接提供了找到解决方案的方法。 Ignoring accented letters in string comparisonPowerShell version of this same C# code .

使用 ISE 中的 PowerShell 脚本,我能够编写以下内容:

$hsNames = @{}
$hsNameID = 1

$name1 = "Νικος"

$hsNames.Add($name1, $hsNameID)
$hsNameID++

$name2 = "Νίκος"
$hsNames.Add($name2, $hsNameID)

$hsNames

$new1 = Remove-StringDiacritic $name1
$new2 = Remove-StringDiacritic $name2

"With Diacritic removed"
$new1
$new2
$new1 -eq $new2

输出是:

Name                           Value                                                                                                                                 
---- -----
Νικος 1
Νίκος 2
With Diacritic removed
Νικος
Νικος
True

基于此,您可以在插入哈希表之前“规范化”字符串,最终您将得到一个键,而不是您想要的两个键。

关于mysql - Powershell 哈希表和重复键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34953611/

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