文字列の前後の空白を削除するには (strip / trim)

文字列の前や後ろにある空白を削除する方法の、プログラミング言語別のメモ。言語によってメソッド名/関数名が trim だったり strip だったり。

Go言語

strings.TrimSpace(str)

Java

str.trim()

Scala

str.trim

PHP

trim($str)

Smarty(PHP)

{$str|trim}

Python

str.strip()

Ruby

str.strip

Perl

# $str自体を書き換える
$str =~ s/\A\s*(.*?)\s*\z/$1/;

Go言語 (golang)

stringsパッケージのTrimSpace関数を使う。

package main

import "fmt"
import "strings"

func main() {
    str := "  abc  "
    fmt.Println(strings.TrimSpace(str));
    // => abc
}

Java / Scala

Javaでの例

String trimmedStr = str.trim();

Scalaでの例

val trimmedStr = str.trim;

Signature:

String java.lang.String#trim()

Java/Scalaの文字列は不変であるので、このメソッドは元の文字列を変更せずに、両端の空白を削除した新しい文字列を返す。

両端にある文字コードが 0x20 以下の文字をすべて削除するので、スペースだけでなく改行やタブなども削除される。 0x7F は削除しない。

java.lang.String#trim | Java Platform SE 8 Javadoc
http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#trim–

PHP

trim関数で両端にある空白類を削除できる。

$str = trim($str);
$str = trim($str, $charlist);

2番目の引数を指定しない場合は、空白類として以下の文字が削除される。

# 改行コードのみを削除
trim($str, "\r\n")

trim 関数 | PHP Manual
http://php.net/manual/ja/function.trim.php

trimは全角に対応しているので、たとえ第2引数に全角スペースを指定しても正常に動作しない。第2引数に全角スペースを入れると、第1引数の内容によっては文字列が破壊されて文字化けを起こしてしまう。

PHPで文字列の最初と最後の半角、全角スペースを取り除く
http://unsolublesugar.com/20120622/200605/

Smarty

PHPの関数をそのまま修飾子として使えるので、trimして表示したい場合は、以下のように書ける。

{$str|trim}

{strip} というのがあるが、これは、HTMLタグの間にある改行やスペースを削除してくれるもので、trimとは別。ソースコードのインデントなどを維持したまま、 HTMLの余計な空白による悪影響を排除するための機能。

http://www.smarty.net/docsv2/ja/language.function.strip.tpl

Python

文字列にあるメソッド strip, lstrip, rstrip を使う。

str.strip() # 先頭と末尾の空白を削除する非破壊的メソッド
str.lstrip() # 先頭の空白を削除する非破壊的メソッド
str.rstrip() # 末尾の空白を削除する非破壊的メソッド

ちょっと調べたところ、空白には" "(\x20)以外にタブ(\t)や改行(\n, \r)も含まれるが、 0x20以下のすべての制御文字が削除されるわけでもないみたい。以下の例の通り、例えば \a は削除されない。

str = " \r\n\t\aabc"
print(len(str.strip()))
# => 4

string.strip | Python 2.7 documentation
http://docs.python.jp/2/library/string.html#string.strip

string.lstrip | Python 2.7 documentation
http://docs.python.jp/2/library/string.html#string.lstrip

string.rstrip | Python 2.7 documentation
http://docs.python.jp/2/library/string.html#string.rstrip

string.strip | Python 3 documentation
http://docs.python.jp/3/library/stdtypes.html#str.strip

string.lstrip | Python 3 documentation
http://docs.python.jp/3/library/stdtypes.html#str.lstrip

string.rstrip | Python 3 documentation
http://docs.python.jp/3/library/stdtypes.html#str.rstrip

Ruby

str.strip
str.strip!

http://doc.ruby-lang.org/ja/2.0.0/method/String/i/strip.html

空白文字の定義は " \t\r\n\f\v" です。 また、文字列右側からは "\0" も取り除きますが、 左側の "\0" は取り除きません。

最後の改行のみを削除するのは chomp

str.chomp
str.chomp!

http://doc.ruby-lang.org/ja/2.0.0/method/String/i/chomp.html

Perl

いったん変数に入れた文字列から以下のようにして両端の空白を取り除く。

$str =~ s/\A\s*(.*?)\s*\z/$1/;

JavaScript

以前のJavaScriptには trim をする関数がなかったので、以下のjQueryの関数などを使っていた。

jQuery.trim(str)

http://api.jquery.com/jQuery.trim/
http://semooh.jp/jquery/api/utilities/jQuery.trim/str/

だが、最近は文字列のメソッドとして存在するらしい。

var str = "  abc  ";
console.log(str.trim());

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

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。