• ベストアンサー

Split関数で文字を文割するのはわかるのですが、

Split関数で文字を文割するのはわかるのですが、 文字を残して一文字一文字表示ってできるのでしょうか 説明が下手ですいません Perl言語を使っています Botで使いたいと思ってます

質問者が選んだベストアンサー

  • ベストアンサー
  • okmotokun
  • ベストアンサー率59% (92/155)
回答No.4

こういうことですか。 $str='Split関数で文字を文割するのはわかるのですが、 文字を残して一文字一文字表示ってできるのでしょうか'; ※文字コードは UTF-8 です。 foreach(split(/\n/,$str)){@chars=();$chars=""; (@chars)=(/([\x01-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF][\x80-\xBF])/xg); foreach(@chars){ $chars.=$_; print "$chars<br>\n"; } } 【実行結果】 S Sp Spl Spli Split Split関 Split関数 Split関数で Split関数で文 Split関数で文字 Split関数で文字を Split関数で文字を文 Split関数で文字を文割 Split関数で文字を文割す Split関数で文字を文割する Split関数で文字を文割するの Split関数で文字を文割するのは Split関数で文字を文割するのはわ Split関数で文字を文割するのはわか Split関数で文字を文割するのはわかる Split関数で文字を文割するのはわかるの Split関数で文字を文割するのはわかるので Split関数で文字を文割するのはわかるのです Split関数で文字を文割するのはわかるのですが Split関数で文字を文割するのはわかるのですが、 文 文字 文字を 文字を残 文字を残し 文字を残して 文字を残して一 文字を残して一文 文字を残して一文字 文字を残して一文字一 文字を残して一文字一文 文字を残して一文字一文字 文字を残して一文字一文字表 文字を残して一文字一文字表示 文字を残して一文字一文字表示っ 文字を残して一文字一文字表示って 文字を残して一文字一文字表示ってで 文字を残して一文字一文字表示ってでき 文字を残して一文字一文字表示ってできる 文字を残して一文字一文字表示ってできるの 文字を残して一文字一文字表示ってできるので 文字を残して一文字一文字表示ってできるのでし 文字を残して一文字一文字表示ってできるのでしょ 文字を残して一文字一文字表示ってできるのでしょう 文字を残して一文字一文字表示ってできるのでしょうか

akffksai
質問者

補足

回答ありがとうございました 試してみましたが できませんでした・・・

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.5

Botが何を指してるかわかりませんが、もしかしたら 「あいうえお」を ある時刻: 「あ」を出力 一定時間後:「い」を出力。前の「あ」の続きに出力して「あい」となる さらに一定時間後:「う」を出力。前の「あい」の続きに出力して「あいう」となる .... ってことなんでしょうか。 それならば、上に書いた通りにsplitで分割したものを先頭から順番に1文字ずつ表示するだけです。 また、「表示」って、どこへどんな方法で「表示」するのでしょう? バッファリングしているなら、1文字毎にフラッシュが必要でしょう。 GUIのモジュールへの出力ならリフレッシュが必要かもれません。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

いろいろ考えられる. split でもいいし chop も使える.

全文を見る
すると、全ての回答が全文表示されます。
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

言いたいことはわかったわ。 split //, $text の結果が1文字ずつになるわよ。 前回の文字列と、配列のインデックスを覚えておけば 次を作るのは難しくないわね。

全文を見る
すると、全ての回答が全文表示されます。
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

ごめん 意味がさっぱり分からないわ。 具体的にどうなりたいのかを書いてくれる?

akffksai
質問者

補足

説明下手ですいません どういえば、いいのかな・・・orz [あ] [あい] [あいう] [あいうえ] [あいうえお] こんな感じでしょうか、 もともと文字を決めておいて、今の場合は"あいうえお"ですよね?? あ あい あいう あいうえ あいうえお という風に、文字を残して表示それも一文字ずつです、 これでわかってもらえますでしょうか・・・?? 一文に"あ~お"までを表示といえばいいのでしょうか、 "あ~お"までなんですが、途中には「い」「う」「え」 がはいってますよね、それも残したまま次の文字も表示です 改めて回答お願いします

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • split関数について・・・

    split関数について・・・ split関数を使いたいのですが、 どうかいていいかわかりません Perl言語を使用してます、 どなたか、回答おねがいします 試してみましたが、プログラムが終了して しまいます、ボットで使おうと思ってるのですが

    • ベストアンサー
    • Perl
  • 【perl】 split関数のセパレータについて

    perlで split関数を使いたいのですがセパレータの定義がうまくいかずに 困っています。 split関数で //\n といった複雑な文字列をセパレータとして認識させるには どうすればよいのでしょうか。 '/' 1文字だけでセパレータとされては意味がなく、 //\n という文字列を ひとまとめでセパレータとして認識させたいと思っています。 みなさま、よろしくお願いします。

    • ベストアンサー
    • Perl
  • マージ型文字列のデリミタ2文字以上のSplit関数のようなものは実現できますか?

    素人で間違っているかもしれませんが、String::Splitは wchar_tのように1文字だけしか使えないので、\r\nのような2文字以上のデリミタに対応しているperlのsplit関数みたいのを探しています。 以下のソースで※ここですの部分で、2文字以上の任意のデリミタでマージ型文字列を配列にしたいです。 .NETは覚えたてですが、Vista以降でも廃れることは無いのでしょうか? 覚えて無意味はきついので・・・ /* VC++2005でperlのようなsplit関数を実現したい 区切り文字は\r\n */ using namespace System; int main( array<String^>^ args ){ String^ str = nullptr; if (1 > args->Length ){ str = "太郎\r\n花子\\純一郎"; } else { str = args[0]; } // strマージ文字列をPerlのsplit関数のようなもので、以下のようなnamesを作成したい。 // $names = split /\r\n/ $str; <=※ここです。 array<String^> ^names = { "太郎", "花子", "純一郎" }; String^ name; for each ( name in names ) { Console::WriteLine("{0}", name); } return 0; }

  • VBA split(文字列, ★) ★←複数デリミタ指定することできますか?

    VBAのsplit()関数ですが、 デリミタは1つしか指定できないのでしょうか? 例えば、 ------------------ 2005-5/23 19'02"40 ------------------ のような文字列を Perlの様に簡単に分割することは無理でしょうか? Array = split(文字列, /[ :\/\'\"-]/)

  • 文字列をsplitするSQL文を教えて下さい

    SQLServer2000上で指定した文字で文字列をsplitような関数があれば教えて頂けますか? 例えば"12345.6789"という文字列を"."(ピリオド)を指定して、"12345"と"6789"という2つの文字列を取得したいと思っています。 Transact-SQLの関数リファレンスを見てみたのですが、適当なものが見つかりませんでした。 自作するしかないのでしょうか・・

  • Excel97 VBA とVBSのsplit関数

    新しい職場で、Excel VBAでデータを取り込み、それを改行文字ごとにsplit関数で区切って配列に入れようとしました。 arr=split(文字列,vbcrlf) って感じでですね。しかし、なんとその職場のExcelのバージョンが97のため、VBAでsplit関数が使えず、この意図が実現できませんでした。そのため、ネットで調べてVBScriptのsplit関数を流用しようとしたのですが、「終了していない文字列型の定数です。」とエラーが出てしまいます。ソースは次のとおりなのですが、どう直せばいいでしょうか。改行文字で区切るのでなく、カンマなどで区切るのなら、上手く出来るのですが・・・。 Sub sample() Dim vs As Object Dim rtn As Variant Dim q As String Dim buf As String q = Chr$(34) 'ダブルクォーテーション Set vs = CreateObject("ScriptControl") vs.Language = "VBScript" 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 buf = "1" & vbCrLf & "2" & vbCrLf & "3" '改行で区切った文字。実際は、もっと複雑な文字を取り込みます。 rtn = vs.Eval("split(" & q & buf & q & ", vbCrLf)") 'Excel97のVBAにはsplit関数がないのでVBSからsplitを流用 Debug.Print rtn(1) 'ここで「終了していない文字列型の定数です。」エラーが出る End Sub

  • split関数とexplode関数の違いと、define関数について

    初歩的な質問なのですが二点質問させてください。 1・ split関数とexplode関数の明確な違い、使い分けがわかりません。 どちらも指定した区切り文字で分解できるのは分かるのですが、それぞれどういったケースで使い分けるのでしょうッか。 2・ define関数は定数名を決めて、その定数に内容として数値やストリングを格納できるようですが、 そもそも、変数にストリングや文字を入れればいいだけで、わざわざ「定数」というものを利用する意味、メリットというのは何があるのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 任意の区切り文字でsplitする方法

    VBAで任意の区切り文字でsplitする方法を教えてください。 例えば 123 456 789 333 3444 66 65 22 といようなスペースあるいはタブで区切られたテキストデータがあるとします。 これを配列に格納したいのですが、 この区切りがタブ一つとか、スペース一つとか決まっていれば split関数で簡単に配列に格納することができますが、 タブかも知れないし、スペースがかも知れないし その数も未定の場合にはどうしたら良いですか? replace関数を使って、まず全てのタブをスペースに変換し その後に、複数のスペースを一つのスペースに変換し 最後にsplit関数を使うという方法しかないでしょうか? もっとスマートな方法があれば教えてください。

  • rubyのループ文の中でのsplitの挙動について

    宜しくお願いします。 Rubyで配列の中の文字列をsplitして多重配列にしたいと考えています。 例えば @memberという変数の中に [ "012,234,567", "8910,111213,141516", ・・・ ] のような文字列の配列があるとします。 これを(/,/)でsplitして [ ["012","234",567] ["8910","111213","141516"] [・・・] ] (・・・は同じような配列が続いているだけです。) のような配列に変更したいと思っていますが うまくいきません。 @member.each do |mem| mem.split(/,/) end のような書き方でやってみましたが、結果は変化なし。 @member.each do |mem| #mem.split(/,/) mem =mem.split(/,/) #結果の処理内容をここに end と書くと、このループ文の中でしか機能しません。 どのような書き方をすれば変数にsplitした結果を 取り込めるのでしょうか。 どうぞ宜しくお願いいたします。

    • ベストアンサー
    • Ruby
  • splitが思うように動きません助けて下さい。

    文字列から、明細と金額にわけてそこから検索できるプログラムを作っています。 テスト用に下記サンプルを作ったのですが、検索明細($moneyvalue)をコーヒーに した場合のみ、値が戻ってきませんでした。 そこで、中のsplit部分を表示するようにしたところ ★収入=-10000. ★電車=+1000. ★コ=. ★[ヒ=. ★[=+2000. ★雑誌=+240. ★=. ★その他=+500. 0 このように コーヒーの部分だけ上手くsplitが動いていないことが分かりました。 しかしココから手詰まりでどのように直せばいいのか分かりません。 想定される結果 ★収入=-10000. ★電車=+1000. ★コーヒー=+2000. ★雑誌=+240. ★その他=+500. 2000 このようにするにはどうしたらいいのか、分かる方おりましたら教えて下さい。 なお、当方はperl初心者です(涙) ----以下サンプルコードです---- #! /usr/local/bin/perl use Encode qw(encode_utf8); use CGI; my $moneyvalue = "コーヒー"; my $moneyline = "収入-10000,電車+1000,コーヒー+2000,雑誌+240、その他+500"; print &chkmoneyValue($moneyline,$moneyvalue); exit; #==============================================================================  sub chkmoneyValue { my ($moneyline , $moneyvalue)=@_; my $lp=0; my $flg=0; my @data= split(/[、,]/, $moneyline); my $datavalue = 0; foreach my $wdata (@data) { $wdata =~ s/\+/\,\+/; $wdata =~ s/\-/\,\-/; my @data2 = split(/[,]/, $wdata); print "★$data2[0]=$data2[1].\n"; if($data2[0] eq $moneyvalue){ $datavalue=$data2[1]; last; } } return $datavalue; }

    • ベストアンサー
    • Perl