2

未定義の一連の文字を見つけて、powershell を介して定義済みのセットに置き換えようとしています。スクリプトの特に厄介な行には、Android プロジェクトの xml マニフェストの変更が含まれます。

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

この行の考え方は、コンテンツを取得し、アイコン文字列を検索して置換し (既存のアイコン名を $icon で表される名前に置換)、これをファイルに戻すというものです。

残念ながら、これを実行しても実際には機能しているようには見えず、文字列は変化していません。既存の文字列は変更可能であるため、値を入力することはできません (したがって、ワイルドカード)。

誰でもこの問題の解決策を提案できますか?

4

2 に答える 2

3

使用している正規表現は正しくないと思います。*修飾子は前の文字の0個以上に一致するため、0/*_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 に答える