2

我试图找到一系列未定义的字符,并通过 powershell 用定义的集合替换它们。特别麻烦的脚本行涉及更改 Android 项目的 xml 清单:

(get-content "AndroidManifest.xml") | 
   foreach { $_ -replace "@drawable/*_icon", "@drawable/$icon_icon"} | 
   set-content "AndroidManifest.xml"

这一行的想法是它检索内容,搜索并替换图标字符串(将现有图标名称替换为 $icon 表示的名称),然后将其传递回文件中。

不幸的是,当执行时,这似乎并没有真正完成它的工作,并且字符串只是没有改变。现有字符串是可变的,因此不能输入任何值(因此是通配符)。

任何人都可以提出解决这个问题的方法吗?

4

2 回答 2

3

我认为您使用的正则表达式不太正确。*修饰符匹配零个或多个前一个字符,因此匹配/*_icon零个或多个正斜杠后跟_icon.

其次,在您的替换字符串中,您匹配的内容将被替换为$icon_icon变量的值。您需要将$icon变量包装为表达式$($icon)_icon或字符串格式,"@drawable/{0}_icon" -f $icon. 我更喜欢字符串格式。

把它们放在一起,你会得到:

 $_ -replace "@drawable/(.*?)_icon", ("@drawable/{0}_icon" -f $icon)
于 2012-06-14T14:36:37.007 回答
0

将脚本中的 $icon_icon 替换为 $($icon)_icon。

于 2012-06-14T12:58:57.990 回答