分かりやすく、使いやすく。

文字列の右側からN文字取り出す方法

スポンサーリンク

Powershell では Right メソッドは無い為、 Substring メソッドを使用して右側から指定した文字数を取り出します。

  1. 半角文字列の右側からN文字取り出す
  2. 全角文字列の右側からN文字取り出す
  3. 全角文字と半角文字混合の文字列の場合
  4. 数値の右側からN文字取り出す


半角文字列の右側からN文字取り出す

サンプルコードは次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 10文字の文字列を作成
$str = '0123456789';
 
# 右から5文字取得 56789
Write-Host $str.Substring($str.Length - 5, 5);
 
# 右から4文字取得 6789
Write-Host $str.Substring($str.Length - 4, 4);
 
# 右から3文字取得 789
Write-Host $str.Substring($str.Length - 3, 3);
 
# 右から2文字取得 89
Write-Host $str.Substring($str.Length - 2, 2);
 
# 右から1文字取得 9
Write-Host $str.Substring($str.Length - 1, 1); 

$str.Length は文字列の長さ(上記サンプルでは 10)を返しますので、そこから取り出したい文字数をマイナスすることで開始位置を求めています。

実行結果は次の通りです。

56789
6789
789
89
9 

全角文字列の右側からN文字取り出す

PowerShell の Substring は文字列の長さはバイト数ではなく文字数での指定になります。その為、全角の場合も引数で指定した数だけ文字を取り出します。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
# 5文字の文字列を作成
$str ='一二三四五';
 
# 右から3文字取得 三四五
Write-Host $str.Substring($str.Length - 3, 3);
 
# 右から2文字取得 四五
Write-Host $str.Substring($str.Length - 2, 2);
 
# 右から1文字取得 五
Write-Host $str.Substring($str.Length - 1, 1); 

上記の実行結果は次の通りです。

三四五
四五
五 

全角文字と半角文字混合の文字列の場合

Substring はバイト数ではなく文字数での指定になります。サンプルコードは次の通りです。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
# 5文字の文字列を作成
$str ='1二3四5';
 
# 右から3文字取得 3四5
Write-Host $str.Substring($str.Length - 3, 3);
 
# 右から2文字取得 四5
Write-Host $str.Substring($str.Length - 2, 2);
 
# 右から1文字取得 5
Write-Host $str.Substring($str.Length - 1, 1); 

上記の実行結果は次の通りです。

3四5
四5
5 

数値の右側からN文字取り出す

数値の場合、Substring メソッドは使用できないので、 ToString で文字列に変換した後 Substring を使用します。

PowerShell(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
# 5桁の数字を作成
$int = 12345;
 
# 右から3文字取得 345
Write-Host $int.ToString().Substring($int.ToString().Length - 3, 3);
 
# 右から2文字取得 45
Write-Host $int.ToString().Substring($int.ToString().Length - 2, 2);
 
# 右から1文字取得 5
Write-Host $int.ToString().Substring($int.ToString().Length - 1, 1); 

上記の実行結果は次の通りです。

345
45
5 
スポンサーリンク
スポンサーリンク