Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell-查找未定义的字符系列_Powershell - Fatal编程技术网

Powershell-查找未定义的字符系列

Powershell-查找未定义的字符系列,powershell,Powershell,我试图通过powershell查找一系列未定义的字符,并将它们替换为已定义的字符集。特别麻烦的一行脚本涉及修改Android项目的xml清单: (get-content "AndroidManifest.xml") | foreach { $_ -replace "@drawable/*_icon", "@drawable/$icon_icon"} | set-content "AndroidManifest.xml" 这一行的思想是检索内容,搜索并替换图标字符串(用$icon

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

(get-content "AndroidManifest.xml") | 
   foreach { $_ -replace "@drawable/*_icon", "@drawable/$icon_icon"} | 
   set-content "AndroidManifest.xml"
这一行的思想是检索内容,搜索并替换图标字符串(用$icon表示的图标名称替换现有图标名称),然后将其传递回文件

不幸的是,当执行时,它看起来并没有真正完成它的工作,字符串也没有改变。现有字符串是可变的,因此不能输入任何值(因此使用通配符)


有人能为这个问题提出解决方案吗?

在脚本中用$($icon)\u图标替换$icon\u图标。

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

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

把这些放在一起,你会得到:

 $_ -replace "@drawable/(.*?)_icon", ("@drawable/{0}_icon" -f $icon)

不幸的是,这并没有解决问题。谢谢你的尝试!能否显示AndroidManifest.xml文件的相关摘录?清单中的相关行是
,其中X是原始图标名称。在这里,我试图选择带有@drawable的字符串,将X替换为$icon。我希望我能在这里更具体一些,但这不是我的XML,它属于我的雇主,我只是想简化构建过程。但是,$替换“@drawable/(.*?)\u图标”,“@drawable/$($icon)\u图标”也可以。