我试图找到一系列未定义的字符,并通过 powershell 将它们替换为定义的字符集。特别麻烦的脚本行涉及更改 Android 项目的 xml list :
(get-content "AndroidManifest.xml") |
foreach { $_ -replace "@drawable/*_icon", "@drawable/$icon_icon"} |
set-content "AndroidManifest.xml"
这一行的想法是,它检索内容,搜索并替换图标字符串(用 $icon 表示的图标名称替换现有的图标名称),然后将其传递回文件中。
不幸的是,当执行时,这似乎并没有真正完成它的工作,并且字符串只是没有改变。现有字符串是可变的,因此不能输入任何值(因此使用通配符)。
有人可以建议解决这个问题吗?
最佳答案
我认为您使用的正则表达式不太正确。 *
修饰符匹配零个或多个前一个字符,因此 /*_icon
匹配零个或多个正斜杠,后跟 _icon
。
其次,在替换字符串中,您匹配的内容将替换为 $icon_icon
变量的值。您需要将 $icon
变量包装为表达式 $($icon)_icon
或字符串格式 "@drawable/{0}_icon"- f $icon
.我更喜欢字符串格式。
把它们放在一起,你会得到:
$_ -replace "@drawable/(.*?)_icon", ("@drawable/{0}_icon" -f $icon)
关于Powershell - 查找未定义的字符系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11033365/