none
要素の数だけ、特定の文字列(たとえば演算子)で連結するには RRS feed

  • 質問

  • こんにちは、文字列の連結の質問になります。

    要素の数だけ、 or で連結して、とあるコマンドに引き渡す構文を生成する処理を書いています。

    aaaa
    bbbb
    cccc
    dddd

    という4つの要素があれば、

    "aaaa or bbbb or cccc or dddd"

    という文字列を生成するものです。
    ポイントは、

    "aaaa or bbbb or cccc or dddd or"

    で終わってしまってはいけないという事です。

    "aaaa or bbbb or cccc or dddd"

    で終わらなくてはいけません。

    そして、要素が"aaaa"のみであった場合は、
    or演算子の無い 単なる"aaaa" を出力せねばなりません。

    現状、以下の手法をとっているのですが、「要素の最初だけ(つまり"aaaa"だけ)、他の要素と綺麗に分断して異なる処理をさせる」、別の手法は存在するものでしょうか?

    あるいは、もっと別の書き方の方が可読性が高い、というものがあればご教示頂けないでしょうか。よろしくお願いします。

    $USERLIST = @("aaaa","bbbb","cccc","dddd")
    $USERLIST | foreach-object {
       if ( $flag -eq $null ) {
          $UserString="$_"
          $flag++
       } else {
          $UserString= $UserString + " or $_"
       }
    }
    $UserString
    Remove-Variable UserString
    Remove-Variable flag

    2015年6月16日 2:05

回答

  • Joinを使用すればシンプルに書けると思います。

    $USERLIST = @("aaaa","bbbb","cccc","dddd")
    $UserString = $USERLIST -join " or "
    
    $UserString
    
    Remove-Variable UserString

    • 回答としてマーク 美凪2 2015年6月16日 2:57
    2015年6月16日 2:37

すべての返信