重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Yamamoto TaroをTaro Yamamotoにしたいです。ただし間のスペースの個数は維持したいんですが・・・
Perlで簡単にやる方法ありますか・・・

A 回答 (4件)

手っ取り早いのは、正規表現の置換を使うことです。



my $string = 'Yamamoto Taro';

$string =~ s/^(\S*)(\s+)(\S*)$/$3$2$1/;

print $string, "\n"; # Taro Yamamoto

########################################

$_ = 'Yamamoto Taro';

s/^(\S*)(\s+)(\S*)$/$3$2$1/;

print $_, "\n"; # Taro Yamamoto
    • good
    • 0

my $string = 'Yamamoto Taro';


if ($string =~ m/(\S+)(\s+)(\S+)/) {
$string = $3 . $2 . $1;
}
print $string, "\n"; # Taro Yamamoto
    • good
    • 0

Perl は、ここ5,6年触ってませんが


(だってPHPの方が便利なんだもん。)
spliteって使えませんか?

http://www.perlplus.jp/func/string/index3.html

配列を用意して、空白で区切り、
配列の1番目と2番目を空白を挟めばよいかと。
    • good
    • 0

最初に登場する単語と末尾の単語を入れ替える、正規表現を使った置換を行うとか。

「Perlで苗字と名前の入れ替えしたいです」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!