Edited at

PythonとかJavaScriptとかJavaで先頭と末尾の空白を削除する

マイクロサービスで開発していて、

機能ごとに先頭と末尾の空白を削除しなければならないことがあったので、

言語毎の削除方法を調べてみました。


Python


stripメソッド

引数に任意の文字列を指定することで文字列の先頭と末尾からその文字列を削除することが出来ます。

引数を省略すると、文字列の先頭と末尾の空白やタブを削除することが出来ます。

文字間の空白は削除されません。

使い方

先頭に半角空白、末尾にタブを入れています。

str = ' Hello World '

print(str.strip())

結果

Hello World

先頭を削除したい場合は、

lstripメソッドを使用します。

先頭にタブを入れています。

str = ' Hello World '

print(str.lstrip())

結果

Hello World 

末尾を削除したい場合は、

rstripメソッドを使用します。

末尾に全角空白を入れています。

str = ' Hello World '

print(str.lstrip())

結果

 Hello World


JavaScript


trimメソッド

文字列の先頭と末尾の空白やタブを削除することが出来ます。

文字間の空白については削除されず、

片側だけの空白を削除することは出来ません。

※出来ました。ご指摘ありがとうございます。

片側だけの空白を削除する場合は、trimStart()とtrimEnd()を使用することで可能です。今回はChromeで試したのでエイリアスのtrimLeft()、trimRight()を使用しています。

使い方

let str = ' Hello World ';

console.log(str);
console.log(str.trim());

結果

 Hello World    

Hello World

全角も削除されます。

let str = ' Hello World ';

console.log(str.trim());

結果

Hello World

trimLeftメソッドで先頭の空白をtrimRightメソッドで末尾の空白を取り除きます。

MDN web docsによると、

trimLeftメソッド


String.prototype.padStart のような関数との一貫性を持たせるため、標準メソッドの名前は trimStartに設定されています。

しかし、ウェブの互換性の観点から、 trimLeft は trimStartのエイリアスとして残されます。 いくつかのエンジンでは以下のように解釈されます:

String.prototype.trimLeft.name === "trimStart";


trimRightメソッド


String.prototype.padEnd のような関数との一貫性を持たせるため、標準メソッドの名前は trimEnd に設定されています。

しかし、ウェブの互換性の観点から、 trimRight は trimEndのエイリアスとして残されます。 いくつかのエンジンでは以下のように解釈されます:

String.prototype.trimRight.name === "trimEnd";


とのことですので、

ブラウザによって対応、非対応が存在し、

エイリアスを使用する場合もあります。

let str = ' Hello World ';

console.log(str.trimLeft());
console.log(str.trimRight());

結果

Hello World 

 Hello World

※IE9以下ではtrimメソッドは使用出来ないので、

replaceメソッドを使用する必要があります。


Java

trimメソッドを使用します。

※Java11からはstripメソッドを使えば全角も削除できるようです。

使い方

String str = " Hello World  ";

System.out.println(str);
System.out.println(str.trim());

結果

 Hello World    

Hello World

Javaのtrimメソッドでは全角の空白を削除出来ません。

String str = " Hello World ";

System.out.println(str);
System.out.println(str.trim());

結果

 Hello World 

全角の空白を削除する場合は、

replaceAllメソッドを使用して、

正規表現で置換してしまいます。

以下は、末尾に全角空白があった場合です。

String str = "Hello World ";

System.out.println(str.replaceAll("[ ]+$", ""));

結果

Hello World


参考

https://engineer-club.jp/java-trim

https://uxmilk.jp/12804

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/trim

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight