satocchiaブログ
2026
2025
2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
1月
2月
3月
4月
5月
6月
7月
8月
9月
10月
11月
12月
全1件 (1件中 1-1件目)
1
こんな感じの文字列$filters="HTML ファイル|*.html;*.htm,テキストファイル|*.txt,全てのファイル|*.*"を配列に分解しようとしてハマりました。コンマで分けた後、「|」で説明とワイルドカードに区切ろうとして「?」な現象が。$filter=($filters -split ",")[0]これで$filter="HTML ファイル|*.html;*.htm"となるとこまでは無事だったんですが、次に$filterを「HTML ファイル」と「*.html;*.htm」に分けようとして失敗。端末で $filter -split "|" と打ち込むとHTML ファ以下略と1文字ごとバラバラになってしまいました。どうやら、-split演算子で指定する区切り文字はただの文字として処理するのでなく正規表現を期待している模様。「-split "|"」は正規表現としてみると「-split ""」と同じなので結局全部を分化してしまったのでした。ここらへん、-replace演算子に触れた正規表現じゃない直接文字置換と同じようにやれば解決します。$filter -split [regex]::escape("|")ほかには、文字列のsplitメソッドを使って$filter.split("|")とやってもOK。powershellの文字列演算子は正規表現を期待していること、覚えておこう。
2020.05.29
コメント(0)