2

PowerShell スクリプトに、リスト内の各配列を調べてデータ (現在の配列の [3] にある) を取得し、それを使用して配列の別の部分 ([0] にある) を判断する単純なセクションがあります。文字列の末尾に追加する必要があります。

$String = "There is"

$Objects | Foreach-Object{
if ($_[3] -match "YES")
    {$String += ", a " + $_[0]}
}

これはうまく機能し、$String次のような結果になります

"There is, a car, a airplane, a truck"

しかし残念ながら、これは私が望むものに対して文法的に意味がありません。作成後に文字列を修正するか、追加する文字を決定する行を foreach/if ステートメントに含めることができることは承知しています。これは次のようにする必要があります。

  • $String += " a " + $_[0]- 最初の試合。
  • $String += ", a " + $_[0]- 次の試合用。
  • $String += " and a " + $_[0] + " here."- 最後の試合。

さらに$_[0]、子音で始まる場合は「 a 」を使用するか$_[0]、母音で始まる場合は「 an 」を使用するかを決定する必要があります。全体として、出力を

"There is a car, an airplane and a truck here."

ありがとう!

4

1 に答える 1

2

次のようなことを試してください:

$vehicles = $Objects | ? { $_[3] -match 'yes' } | % { $_[0] }

$String = 'There is'
for ($i = 0; $i -lt $vehicles.Length; $i++) {
  switch ($i) {
    0                    { $String += ' a' }
    ($vehicles.Length-1) { $String += ' and a' }
    default              { $String += ', a' }
  }
  if ($vehicles[$i] -match '^[aeiou]') { $String += 'n' }
  $String += ' ' + $vehicles[$i]
}
$String += ' here.'
于 2013-09-25T19:26:53.627 に答える