[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 求指导PowerShell脚本unicode编码转中文中的代码含义

下面的代码,可以把一段字符串中的unicode字符转成中文, 但是看不懂中间那段代码什么含义, 请求大佬指点迷津,添加一下注释, 提前感谢!
具体疑问:
1. 没有Function关键字, 却有param
2. 在一语句前为什么加两个类型 [char][int]
3. $v.Value.replace 这个怎么对象的属性的方法连起来了


$Uni_s = '嗨!\u6211\u662f\u4e2d\u56fd\u4eba'

$match = {

param ($v)

[char][int]($v.Value.replace('\u', '0x'))
}

[regex]::Replace($Uni_s, '\\u[0-9-a-f]{4}', $match)
1

评分人数

    • idwma: 学会了感谢分享技术 + 1
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

回复 2# 523066680


   感谢大侠指导, 看不出来您用的什么脚本语言
感觉上面的PS脚本可能还可以再精简些
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 5# idwma

大侠这里用 $args[0] 用的妙, 但还是似懂非懂, 先Mark了, 以后慢慢消化 另外感觉用这个 '\\u[0-9-a-f]{4}' 更严谨一些

  1. $Uni_s = '嗨!\u6211\u662f\u4e2d\u56fd\u4eba'
  2. [regex]::Replace($Uni_s, '\\u[0-9-a-f]{4}', { [char][int]($args[0] -replace '\\u', '0x') })
复制代码
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

本帖最后由 5i365 于 2022-3-30 06:50 编辑

回复 5# idwma


想请教大侠, 代码中应该是使用了C#的替换函数 [regex]::Replace

不能全程使用PS的替换 -Replace 来搞定吗?


还是说这里用 [regex]::Replace 更恰到好处?
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 9# for_flr


    感谢分享, 用管道后, 好理解多了! 但我执行后, 是竖着输出的, 嗨! 没了




本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 9# for_flr


   [char][int](0x) 大概的意思能明白, 就是把括号内的16进制转成整数,再转成char字符, 但是为啥转成char字符后, 汉字就出来了呢?
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

返回列表