1. ホーム
  2. string

[解決済み] PowerShell 4.0を使用して変数入力からスペースを削除する

2022-03-09 22:54:47

質問内容

すでにいくつか試してみたのですが、なぜかうまくいきません。

基本的に私がやろうとしていることは、ユーザーが値を入力するために コマンドレットを使用し、空白を取り除きます。

試してみました。

$answer = read-host
$answer.replace(' ' , '""')

そして

$answer = read-host
$answer -replace (' ')

私はおそらく本当に明白な何かを見逃している。しかし、誰かが私を助けるか、これを達成するための簡単な方法を示すことができれば、私はそれを感謝します。

私は変数をコマンドにパイプラインして、その方法でストリップするつもりでしたが、私が見た例のどれも、はるかに簡単に見えますが、動作しません。

どのように解決するのですか?

その Replace 演算子の意味は 何かを他のものに置き換える 削除機能と混同しないでください。

また、演算子で処理した結果を変数や別の演算子に送る必要があります。どちらも .Replace() また -replace は元の変数を変更します。

すべてのスペースを削除するには、' スペース記号を空文字列に置き換える '

$string = $string -replace '\s',''

行頭と行末のスペースをすべて削除し、ダブルアンドモアのスペースやタブ記号をすべてスペースバー記号に置き換えるには、次のようにします。

$string = $string -replace '(^\s+|\s+$)','' -replace '\s+',' '

または、よりネイティブな System.String メソッド

$string = $string.Trim()

Regexpが好ましい。 ' ' は 'スペースバー' シンボルだけを意味し '\s' は「スペースキー、タブ、その他のスペース記号」を意味します。なお $string.Replace() は「通常」置換を行い $string -replace はRegEx置換を行うので、より重くなりますが、より高機能です。

RegExにはドット( . )、中括弧( []() )、スラッシュ( \ )、ハット( ^ )、数学記号( +- ) またはドル記号 ( $ ) はエスケープする必要があります。( 'my.space.com' -replace '\.','-' => 'my-space-com' . ドル記号と数字(例 $1 右側の部品に使用する場合は注意が必要です。

'2033' -replace '(\d+)',$( 'Data: $1')
Data: 2033

UPDATE:また $str = $str.Trim() とともに TrimEnd()TrimStart() . 詳しくはこちら システム.ストリング MSDNのページです。