ベストアンサー 配列に入った文字列を結合したいのですが 2013/01/25 08:47 str = array1[m] + array2[n] というように結合したいのですがエラーになります。 どうすればいいのでしょうか? みんなの回答 (2) 専門家の回答 質問者が選んだベストアンサー ベストアンサー kmee ベストアンサー率55% (1857/3366) 2013/01/27 03:03 回答No.2 エラーの理由はちゃんとメッセージに書いてありますよ。 can't convert nil into String nilをString(文字列)に変換できない よって、どちらかがnilということで ・array1[m]が文字列ではない ・array2[n]が文字列ではない に該当します。具体的には ・termがnil ・dic_trans_noun[n]がnil のどちらか、あるいは両方です。 さらに、 a+b は a.+(b)であること、nilには+メソッドが定義されていないことから、「nil+文字列」ではNoMethodErrorになります。 TypeErrorにはなっている、ということは、「文字列+nil」なので ・dic_trans_noun[n]がnil が原因です。 dic_trans_noun[n]がnil、ということは次の2通りが考えられます ・実際にdic_trans_nounのn要素にnilが代入されている ・nがdic_trans_nounの範囲外になっている dic_trans_nounについての記述がここには無いので、どちらの理由かは不明です。 対処法ですが ・nilの場合は別の処理をする ・nilにならないようにdic_trans_noun、またはnを調整する となります。どちらがこのプログラムに求められる仕様なのかは、現在の情報だけでは。私には判断できません。 質問者 お礼 2013/01/27 08:44 ありがとうございます。 nilのときは別の処理をするようにしました。 型変換みたいなものが必要かと思っていたのですが、 一部の要素だけが問題だったんですね。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (1) kmee ベストアンサー率55% (1857/3366) 2013/01/25 10:17 回答No.1 具体的なエラーメッセージは何でしょう? 通常なら、それで問題なく文字列の結合ができます。 ・array1が配列ではない ・array2が配列ではない ・mがarray1の範囲外 ・nがarray2の範囲外 ・array1[m]が文字列ではない ・array2[n]が文字列ではない あたりが予想できますが、エラーメッセージを読まなければ、どれに該当するか(または、別の要因なのか)、わかりません。 質問者 補足 2013/01/26 17:10 回答ありがとうございます。 次のようなプログラムになっています。 1 ### 2 out_find_term = Array.new 3 4 sentence_array.each{|sentence| 5 out_find_term.push "" 6 out_find_term.push "###" + sentence 7 8 n = 0 9 dic_term_noun.each{|term| 10 if /\b#{term}/ =~ sentence then 11 out_find_term.push term #辞書にあれば配列に入れる 12 out_find_term.push dic_trans_noun[n] 13 out_find_term.push "\n" 14 15 end 16 n = n + 1 17 } 18 この11行と12行を a = term + dic_trans_noun[n] out_find_term.push a に変えたのですが うまくいきません。 (out_find_termを出力したときに、1行になるように結合させたいのです) エラーメッセージは「in `+': can't convert nil into String (TypeError)」です。 out_find_term.push(term + dic_trans_noun[n])に変えても同じです。 (補足、遅くなってすみません) 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発Ruby 関連するQ&A 文字列の結合について こんにちわ。文字列の結合について質問があります。 下記のコードに問題はありますか? $strは "1|2|3|4|5|" となるはずなのですが、 "5|" となってしまいます。 コードの記述方法に問題があるかご指摘いただければ幸いです。 よろしくお願いいたします。 *****コード $x=5; $str=""; for($i=0; $i<$x; $i++) { $str = $str . $i+1 . "|"; } 配列の結合 変数1 Array ( [A] => あいうえお ) 変数2 Array ( [B] => わおん ) というような二つの変数の配列を Array ( [A] => あいうえお [B] => わおん ) というように、ひとつの変数内に結合する方法はないでしょうか? 配列に格納した文字列の置換 Perlで、配列@arrayの要素それぞれを文字列$strから見つけてタグで囲みたいと思っています。 $str = 'abc+fghoge(ij'; @array = ('+', '(', '?', '//', 'hoge'); $pattern = '\Q' . join '\E|\Q', @array . '\E'; $str =~ s/($pattern)/<TAG>$1<\/TAG>/g; @arrayの要素には、メタキャラクタが含まれる可能性があるため、\Qと\Eで挟む必要があるかと思うのですが、上のようにしてもうまくいきません。下だとうまく置換されるので、\Qや\Eの使い方は間違っていないと思うのですが、どなたかアドバイスいただけないでしょうか。 $str =~ s/(\Q+\E|\Q(\E|\Q?\E|\Q//\E|\Qhoge\E)/<TAG>$1<\/TAG>/g; よろしくお願いします。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム 配列の結合 2つ配列を普通に結合する関数はありませんか? C言語のstrcatみたいな関数を探しています。 array_merge()以外の関数を教えて下さい。 文字列がうまく取り出せない 文字列がうまく取り出せないので教えて頂きたいのですが $str1 = "[2007年](10月)東京"; $str2 = "[2007年](10月)神奈川 (横浜)"; 上記2通りのデータがあり $str1の場合は、 Array ( [0] => 2007 [1] => 10月 [2] => 東京 ) $str2の場合は Array ( [0] => 2007 [1] => 10月 [2] => 神奈川 [3] => 横浜 ) と配列に格納したいのですが 思うようにできません・・ この場合どう記述すればよいのでしょうか?? 文字列と配列の振る舞いの違いについて 以下のコードで出るalertが Array => 12 String => 2 となります。この原因といいますか原理をご存じでしたら教えていただけませんでしょうか。お願いします。 =========================================================== var test = function(name){ this.arr.push(name); this.str += name; } test.prototype = { arr:[], str:"" } var r = new test("1"); var z = new test("2"); alert("Array => " + z.arr.join("") + "\nString => " + z.str); 【PHP】配列を連想配列に $m = array('a', 'b', 'c'); この配列 $m をもとに $n = array( 'a' => array( 'b' => array( 'c' => array()))); 上のような連想配列 $n をつくりたいのですが、 $n = array( $m[0] => array( $m[1] => array( $m[2] => array()))); 要素の数が固定のときは、これでもいいのですが、数が変動する場合に対応できません。 何か方法があれば教えてください。 配列の要素の結合について 下記の(変更前)から(変更後)のように配列の要素を結合し、 結合後の要素の数は減らしたいと思っています。 関数などを調べたですが、なかなか実現できない状況です。 ご教授いただければと思います。 よろしくお願いします。 (変更前) array(4) { [0]=>"郵便番号" [1]=>"東京都" [2]=>"大田区" [3]=>"氏名" (変更後) array(3) { [0]=>"郵便番号" [1]=>"東京都大田区" [2]=>"氏名" 連想配列内の文字列を結合できませんか 連想配列?の$col[""]内の文字列を結合することはできませんか. PHP4とMySQL 4.0の組み合わせでアンケートページを作ります. 質問1 が 1.phpに($pageid=1;) 質問2 が 2.phpに($pageid=2;) 質問3 が 3.phpに($pageid=3;) 質問4 が 4.phpに($pageid=4;) 質問5 が 5.phpに($pageid=5;) それぞれあります. これに対応して,回答を格納するDBも,CHAR(1)でAns1~Ans5まであります.ここで, $pageid=1; $rst = mysql_query($sql, $con); $col = mysql_fetch_array( $rst); ${"Answer" . $pageid} = $col["Ans" . $pageid]; echo $Answer1; みたいに,連想配列名を変数で指定するような強引技はできないのでしょうか? http://oshiete1.goo.ne.jp/qa2706401.html で同じような質問を 一旦は取り下げたのですが,やっぱり実現したいです. 文字列になっている配列を‥ 以下の値がDBに文字列の項目に登録されています。 DB から値を取得したのはいいのですが文字列なので foreach でグルグルしようとすると怒られてしまいます。 配列の型に変換できればいいのですが(array)だとうまく行かないしどうすればいいかどなたかご教授願えないでしょうか。 よろしくお願いします。 ■値(文字列でDBに格納されてます‥) array( 1=>'a', 2=>'b', 3=>'c', 10=>array( 'A'=>1, 'B'=>'hoge1', ), 11=>array( 'A'=>2, 'B'=>'hoge2', ), 12=>array( 'A'=>3, 'B'=>'hoge3', ), ) 文字列の途中から途中までを抽出 文字列の一部を抽出したいときのプログラムです。 絶対条件は ・文字列はchar*型 ・ある文字で区切られた区間を抽出 です。 以下のコードだとstrncpyの部分でsegmantation faultになってしまいます。 -------------------------- char array[10] = "abcd/efgh"; char* str0 char* str1; char* str2; int = len; str0 = array; len = strstr(str0, "/") - str0; strncpy(str1, str0, len); str2 = array + len + 1; -------------------------- 各変数が str1 = abcd str2 = fghi となるようにしたいです。 char str1[10];などにすればいいのですが、それ以外の方法でお願いします。 ある文字を含む文字列のみ配列にする 何度もすみません。 array(XX) { [0]=> array(2) { ["text"]=> string(YY) "りんご美味しい" ["name"]=> string(Z) "あいこ" } [1]=> array(2) { ["text"]=> string(XX) "富士山登りたい" ["name"]=> string(Z) "みほ" } [2]=> array(2) { ["text"]=> string(XX) "動物園行きたい" ["name"]=> string(Z) "なほ" } [3]=> array(2) { ["text"]=> string(XX) "メロン美味しい" ["name"]=> string(Z) "ゆい" } [4]=> array(2) { ["text"]=> string(XX) "お腹すいた" ["name"]=> string(Z) "まこ" } [5]=> array(2) { ["text"]=> string(XX) "数学やだー" ["name"]=> string(Z) "あいこ" } ……… } のような配列$textがあり、そこから["text"]に $keyword = array("りんご","メロン") の文字列を含むものだけ取り出したいです。 今までもらった回答を参考に $key_text = array(); foreach($text as $key => $v1){ foreach($keyword as $v2){ if(strpos($v1[text], $v2) !== false){ $key_text[] = $key; } } } と書いてみたのですが、上手く動作しません。 よろしければどこが間違っているかご指摘ください。 お願いします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム 文字の結合 あるWEBフォームで、うまく動作しないためご質問いたします。 複数フォームのエスケープ・エンコードのため、以下関数を使用しております。 function post($str) { $str=addslashes(strip_tags($_POST[$str])); print (mb_convert_encoding("$str","UTF-8","SJIS")); } これを使用し、時と分の項目をPOSTで受け取り、結合し、DBに登録しようとしているのですが、うまく動作いたしません。たとえば、hh=12,mm=00 だった場合、 <? $time = post(hh).":".post(mm); echo $time; ?> と実行すると、なぜか「1200:」のようになり、「12:00」とはなりませんorz 原因のわかる方がいらっしゃいましたら、お教え願えればと存じます。 よろしくお願いいたします。 JAVAの配列関連 java の配列について質問があります。 わかりそうでわからない、というところであります。 【質問】 以下のような要素数の不明な配列を1つの文字列にする場合 どの様に処理したら良いのでしょうか。 ただし、array には何らかの文字列が既に入っているとします。 (どのように for 文などでくくれば、上手く出来るでしょうか。) ArrayList<String> array = new ArrayList<String>(); int size = array.size(); String str = null; if(size == 0){ str = (array.get(0)); } else if(size == 1){ str = (array.get(0) + "," + array.get(1)); } else if(size == 2){ str = (array.get(0) + "," + array.get(1) + "," + array.get(2)); } else if(size == 3){ str = (array.get(0) + "," + array.get(1) + "," + array.get(2) + "," + array.get(3)); } else if(size == 4){ str = (array.get(0) + "," + array.get(1) + "," + array.get(2) + "," + array.get(3) + "," + array.get(4)); }・・・ この if文 の部分を for文 ですっきりさせたいのですが どうにも思いつきません。 ご存知の方いらっしゃいましたら お力添えをお願いいたします。 PHP 文字分割で配列に。 こんにちは。 先日よりPHPにて文字列を分割し配列する事に悩んでいます。 質問内容としましては、 $str = "文字","1,2,3","テキスト" を Array ( [0] => 文字" [1] => "1,2,3" [2] => "テキスト" ) の様に配列にしたいと思っています。 今までは、sprit(",", $str) で分割していましたが、PHP 5.3.0 で 非推奨となったことで explode(",", $str) に変更。 その後今回の様なデータは無く問題ありませんでしたが、新しくデータを読み込みした時、ダブルクォートの中にコンマがあり、 Array ( [0] => 文字" [1] => "1 [2] => 2 [3] => 3" [4] => "テキスト") と分割され、エラーとなりました。 色々、「Sprit」「PHP 分割 ダブルクォーテーション」等で検索しているにも関わらず、希望の情報がヒットしませんでした。 改善方法若しくは情報の記載されておりますサイトがあればご誘導いただければ幸いです。 初歩的な質問かと思いますが、お願い致します。 サーバの種類: MySQL サーバのバージョン: 5.5.42 - Source distribution PHP/5.6.10 文字列の動的な結合 C♯、.net frameworkdは2.0の環境です。 メソッドでSQL用の文字列を作っています。 引数によって、JOINするテーブルを変えたいのですが、StringBuilderではなく、 単なるStringの変数を、ひたすら + で結合している状態なので、悩んでいます。 String sql; sql = " select " + " tbl.column1 " + " from " + … こんな感じです。 StringBuilderで作り直したいのですが、諸事情により難しいので、+での文字列結合をしつつ、 ところどころ、引数を見て文字列を結合したりしなかったり…ということをスムーズにできる 方法はないでしょうか? VC++2010で配列に文字列を使用する方法 array<String^,3>^ myMat = gcnew array<String^,3>(15,97,3338); このようにするとビルド出来るのですが、 array<String^,3>^ myMat = gcnew array<String^,3>("あ","か","さ"); とすると 1>d:\documents and settings\****\my documents\visual studio 2010\projects\****\Form1.h(220): error C2440: '初期化中' : 'const char [3]' から 'int' に変換できません。 1> この変換が可能なコンテキストはありません。 とエラーが出てしまいます どのようにすれば良いのでしょうか? 文字列を配列化する方法を教えてください! 1列の文字列を配列化する方法を教えてください。 メモリの確保らしいのですが、参考になるソースが拝見できれば嬉しく・・・main から参照したいです。 char Text[] = "AAAA\nBBBB\nCCCCCCCC\nDDD\n"; ↓ char str[0] = "AAAA"; str[1] = "BBBB"; str[2] = "CCCCCCCCC"; str[3] = "DDD"; どうやったらいいのか全くイメージがわかないので、 よろしく御願いします! ある列と列との文字を結合するには? 図のように複数の列に入力されている文字を 1つの列に結合するにはどのようにしたらようでしょうか? ある文字を含む文字列のみ配列にする方法 var_dump($text); を行うと array(1) { [0]=> string(XX) "あいさつ" } array(1) { [0]=> string(XX) "いい日旅立ち" } array(1) { [0]=> string(XX) "りんご、うまい" } array(1) { [0]=> string(XX) "メロン好き" } …… となるような変数 $text があり、そこから $key = array("ばなな","りんご","メロン"); の配列内にある文字列を含むものだけを新たに格納したいです。 自分では foreach($text as $value){ if(in_array($value, $key)){ $key_text[] = $value; } } と書いて試したのですが、NULLと返ってきてしまいます。 どうやって書けばいいか教えて下さい。 よろしくお願いします。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
ありがとうございます。 nilのときは別の処理をするようにしました。 型変換みたいなものが必要かと思っていたのですが、 一部の要素だけが問題だったんですね。