powershell - PowersShell 大写替换
问题描述
好的...经过 99 种不同的组合...
我想将数千个文件中所有出现的 EnumMessage.something 替换为 EnumMessage.SOMETHING 所以第二个单词大写。它可以是独立的,也可以是一个点或一个 (
$output = 'EnumMessage.test(something) and EnumMessage.Tezt andz EnumMessage.ALREAdY. ' -creplace 'EnumMessage\.(\w+)', 'EnumMessage.$1.ToUpper()'
$output
所以上面将函数 Upper 放在那里(单词),但它没有放在第二个单词的上方。
解决方案
在 PowerShell 6 及更高版本中,-replace
运算符还接受执行替换的脚本块。脚本块为每个匹配运行一次。
在 PowerShell 5 中,应用Regex.Replace
Method。
$string = 'EnumMessage.test(something) and EnumMessage.Tezt andz EnumMessage.ALREAdY. '
$pattern = '(?<=EnumMessage\.)(\w+)'
# (?<=EnumMessage\.) = positive lookbehind
if ( $PSVersionTable.PSVersion.Major -ge 6 ) {
$string -replace $pattern, { $_.Value.ToUpper() }
} else {
[regex]::Replace( $string, $pattern, { $args.Value.ToUpper() } )
}
推荐阅读
- java - While 循环表
- node.js - Heroku 部署 MEVN 堆栈
- sql - SQL嵌套连接到同一个数据表
- android - 如何从 OnClickListener 内部更新 ViewPager?
- arrays - 如何在我的数组对象中用 {} 更改 []
- android - 在锁定屏幕上拨打活动中的号码?
- c++ - 如何使用渲染缓冲区和 glBlit 渲染到四个窗口,使用 GLFW
- django - Docker - 同一网络上的容器之间的通信失败
- amazon-web-services - 无法在 macOS 上对 ubuntu EC2 实例进行 ssh - 权限被拒绝(公钥)
- react-native - React Navigation:是否可以从不同的 stackNavigator 导航到同一屏幕?