文字列の配列(リスト)を特定の文字列で連結するには (implode / join / mkString)

文字列を要素とする配列(リスト)を特定の文字または文字列で連結して、全体で1つの文字列を生成する方法。

Go言語

import "strings"

strings.Join(sl, ",")

Scala

lst.mkString(",")

PHP

implode(",", $arr)

Python

",".join(lst)

Ruby

arr.join(",")

Perl

join(",", @arr)

JavaScript

arr.join(",")

関連

スポンサーリンク

Go言語 (golang)

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

package main

import "fmt"
import "strings"

func main() {
    sl := []string{"abc", "def", "ghi"}
    str := strings.Join(sl, ",")
    fmt.Println(str)
}

Scala

List などのコレクション型にある mkString というメソッドでできる。

Signature:

リストの要素が文字列でなくても要素ごとに toString メソッドで文字列に変換されてから連結される。

PHP

implode関数を使う。

$str = implode($separator, $arr);

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

実はimplodeの2つの引数はどちらが先に来てもよい。ちょっと気持ち悪いが、これはPHPの有名な「歴史的な理由」。

ちなみに (string)$arr とすると、Notice: Array to string conversion というNoticeとともに、配列の中身に関係なく固定で "Array" という文字列が返される。

Python

Pythonでは配列のメソッドではなく、文字列にjoinメソッドがある。セパレータとなる文字列に対してこのメソッドを呼び出す。

separator.join(lst)

str.join | Python 2.7 documentation
http://docs.python.jp/2/library/stdtypes.html?highlight=join#str.join

str.join | Python 3 documentation
http://docs.python.jp/3/library/stdtypes.html?highlight=join#str.join

Ruby / JRuby

Array#join メソッドまたは Array#* メソッドでできる。

Array#join は引数を省略すると、$, という変数に入っている文字列で連結する。

arr = ['abc', 'def', 'ghi']

p arr.join(',') # => "abc,def,ghi"
p arr * ","     # => "abc,def,ghi"

p arr.join # => "abcdefghi"
$, = "::"
p arr.join # => "abc::def::ghi"

Array#join | Ruby 2.1 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/method/Array/i/join.html

Array#* | Ruby 2.1 リファレンスマニュアル
http://docs.ruby-lang.org/ja/2.1.0/method/Array/i/=2a.html

Perl

join関数を使う。

my @arr = ('abc', 'def', 'ghi');
print @arr;            # => abcdefghi
print "@arr";          # => abc def ghi
print join(' ', @arr); # => abc def ghi
print join(',', @arr); # => abc,def,ghi

join 関数 | perldoc.jp
http://perldoc.jp/func/join

JavaScript

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