10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PowerShell で文字・文字列を書き換える便利関数

Posted at

PowerShell を使っていて、文字列をゴニョゴニョしたくなること、あると思います。
私の場合は特に「ある文字列の i 番目の文字を c に書き換えたい」「ある文字列の i 番目からの文字列を s で書き換えたい」というような事がしたかったのです。
残念なことに、.NET にはそういうのが無く、PowerShell 独自の関数としても見つけられなかったので、ちゃちゃっと書いてみました。

Rewrite.ps1
function rewriteCharAt {
  param(
    [int]$index,
    [char]$value,
    [Parameter(ValueFromPipeline=$true, Mandatory=$true)][string[]]$target
  )
  
  process {
    foreach ($s in $target) {
      $s.Substring(0, $index) + $value.ToString() + $s.SubString($index + 1)
    }
  }
}
 
function rewriteStringAt {
  param(
    [int]$index,
    [string]$value,
    [Parameter(ValueFromPipeline=$true, Mandatory=$true)][string[]]$target
  )
  
  process {
    foreach ($s in $target) {
      $s.Substring(0, $index) + $value + $s.Substring($index + $value.Length)
    }
  }
}

エラー処理とかはしていないので、インデックスの指定を間違えたりするとお察しです。

この関数は書き換えたい元の文字列をパイプラインで受け取ることができるので、こんな風に使えます。

Usage.ps1
PS C:\home> "This is a pen." |
>> rewriteStringAt 0 "That" |
>> rewriteCharAt 13 "!"
>> 
That is a pen!
PS C:\home> 

ほげーヾ(๑╹◡╹)ノ

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?