本帖最后由 5i365 于 2022-3-31 11:41 编辑
回复 8# for_flr
大侠好, 想请教一个问题, 下面的代码, 输出的结果是: hash表对象的属性,即蓝色字, 我想输出hash对象的定义的字符串,即红色字,
我找了下相关函数没有找到, 我印象中在哪里看到过, 字符串转对象, 对象转字符串,还有一些对象, 是可以互转的
Name Value
---- -----
日本 "在东京"
美国 "在纽约"
南非 "在刚果"
------------------------------------------------------------------
$hash = [ordered]@{
日本 = "在东京"
美国 = "在纽约"
南非 = "在刚果"
}
| $s = @" | | 岁月难得沉默 | | 秋风厌倦漂泊 | | 夕阳赖着不走 | | 挂在墙头舍不得我 | | 昔日伊人耳边话 | | 已和潮声向东流 | | 再回首 | | | | 黄种人"在东京", //日本 | | 白人"在纽约", //美国 | | | | "在刚果",//南非 | | 黑人//印度 | | | | | | 往事也随枫叶一片片落 | | 爱已走到尽头 | | 恨也放弃承诺 | | 命运自认幽默 | | 想法太多由不得我 | | 壮志凌云几分酬 | | 知己难逢几人留 | | "@ | | | | $txt = $s -split '\n' -join "|" | | | | $pattern1 = " | | $pattern2 = '("\w+"),\s?//(\w+)' | | $hash = [ordered]@{ } | | | | if ($txt -match $pattern1) | | { | | $target = $matches[1].split('|') | | } | | | | foreach ($line in $target) | | { | | if ($line -match $pattern2) | | { | | $hash[$matches[2]] = $matches[1] | | } | | } | | $hashCOPY |
|