正規表現(match)が多機能で一番汎用性があります。
抽出条件がシンプルなのであれば、処理が軽いワイルドカード(like)が使えます。
ただ、数十万回とか回さないと差は分からないと思う…。
同じスクリプト内で、正規表現とワイルドカードを織り交ぜるとバグを埋め込みやすいので、基本は正規表現に統一した方が良いです。
# 文字列配列 $Array = @() $Array += '1行目:a' $Array += '2行目:bb' $Array += '3行目:ccc' ## 要素数(行数) $Array.Length $Array ## 正規表現で抽出① $Array -match 'b' ## 正規表現で抽出②(上①と同じ結果) foreach ( $String in $Array ) { if ( $String -match 'b' ) { $String } } ## ワイルドカードで抽出① $Array -like '*c' ## ワイルドカードで抽出②(上①と同じ結果) foreach ( $i in 0..($Array.Length -1) ) { if ( $Array[$i] -like '*c' ) { $Array[$i] } } # 要注意 ## 演算子 -match や -like は左側が変数か配列化で結果が異なります。この違いを理解していないとハマります。(上の抽出①と②に関連) $Example1 = '単なる文字列' $Example2 = @( '1行だけの文字列配列' ) $Example1 -match '文字列' $Example2 -match '文字列'
0 件のコメント:
コメントを投稿