• ベストアンサー

配列の検索について質問です

配列の中身を検索し、指定した文字を含む文字列を配列から取り出して表示させたいですのです。 文字列が.indexOfで検索できるのはわかったのですが、配列のからの検索がよくわからない状態です。 どなたか知恵をお貸しいただけないでしょうか。 よろしくおねがいします。 例 配列の中身 日本東京 アメリカワシントン イギリスロンドン 指定文字:アメリカ 出力:アメリカワシントン という形にしたいです。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

forで回して調べてみては? <script> var a=["日本東京","アメリカワシントン","イギリスロンドン"]; var b="アメリカ"; for (var i=0;i<a.length;i++){ if(a[i].match(b)) document.write(a[i]); } </script>

105atu
質問者

お礼

回答ありがとうございます! うまく動かすことができました!

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

その他の回答 (1)

回答No.2

split()関数の手もありますよ。 以下用例― var a=["日本東京","アメリカワシントン","イギリスロンドン"]; document.write(mytest("アメリカ")); function mytest(s){ b=","+a+","; c=b.split(","+s); d=c[1].split(","); return(s+d[0]); }

105atu
質問者

お礼

回答ありがとうございます! こういうやり方もあるのですね 試してみます!

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

関連するQ&A

  • 配列内の文字列検索をしたい

    お世話になっております、またjavascriptで詰まってしました。現在作ってるソースは以下のイメージです。 var temp= hensuu; var list = "aa,bb,cc"; //tempがaa,bb,ccの文字を含んでいたら処理 if(list.indexOf(temp)!=-1){ //ここで何番目の要素か知りたい } という処理をしているのですがif(list.indexOf(temp)!=-1)の中で「文字列(list)に存在する」だけでなく,「区切りの何番目の要素か」も知りたいんですがそういう便利な関数か方法はあるでしょうか? list.indexOf(temp)の返す値は「文字列が見つかった場所」なのでリストの順番ではないんですよね…。 for文でひとつひとつ回すしか方法は無いのでしょうか??LIST(もしくは配列)内検索関数みたいなのがあればナイスなんですが…。分かる方、ご教授頂けたらこれ幸いです。

  • vb 配列の再検索について

    こんばんは、 vbで悩んでいます。  配列の検索で、みつかったら、行と位置を出力する でた結果の次の行から 再検索する ということをしたいのですが。 一回目の検索はできるのですが、ボタンをおしたら つづいて 検索できるようにしたいのです。 できたら、アドバイス等おねがいいたいします。 Dim i,r,j As Integer Dim a1() As String Dim a2 As String a2 = Text.Text For j = LBound(a1) To UBound(a1) r = r + 1 i = a1(j).IndexOf(a2, 0) Do Until i <> 0 text1.Text = Val(i + 1)  i = a1(j).IndexOf(a2, i + 1) text2.Text = r  text3.Text = a1(j) If i <> 0 Then Exit For End If Loop Next a1に以下の内容があった時 a1(0) = "例1" a1(1) = "例2" a1(2) = "例3" ”例”と検索をかけると、 text1.Textには 1と出力。(位置表す) text2.Textには 1と出力。(行表す) text3.Textには 例1と出力。 exit for でループをぬけているのですが。 これを、検索ボタンを押すたびに、行と位置 が表示されるようにしたいのですが、 アドバイスおねがいします。

  • javascriptの配列の検索について

    テキストエリアに入力された文章を、改行ごとで配列に格納 その後、特定の文字を検索し、特定の文字がある配列を見つけて 見つかったものに処理をかけたいです 現在、配列に格納するところまでできているのですが、その後の文字を検索するところで躓いてます。 配列をmatchで検索すると一番最初の配列にのみ処理をかけてしまっているのが現状です。 どなたかお知恵を貸していただけないでしょうか よろしくお願いします。 例 入力された文字列:                明日の時刻のお知らせ                開始時間:10時30分                受付開始は10時00分からとなっております。                遅れないようにお願いいたします。 検索する文字:  時間     ↓ 検索ワードを含む配列:開始時間:10:30     ↓これに処理かけて 出力:10:30 検索ワードが見つからない場合 出力:10:00 10:30 という形にしたいです。 プログラムは下記のように組みました。 //////////////////////////// <html> <head> <script language="JavaScript"> function tester(){ var str= document.getElementById('input_text').value; var time; var alltime; abc = str.split(/\r\n|\r|\n/); var g = ["開始時間"]; for (var i=0;i<abc.length;i++){ if(abc[i].match(g)){ time = abc[i].match(/\d{1,2}:\d{1,2}/g); if(time2 !=null){ alert(time); document.write(time); break; } }else{ alltime = str.match(/\d{1,2}:\d{1,2}/g); if(alltime !=null){ document.write(alltime); } }break; } } </script> </head> <body> <textarea id=input_text rows="10" cols="45"> </textarea><br> <input type=button onclick="tester()" value="start"> </body> </html>

  • flashで配列内の検索について

    いつもお世話になっています。 PHPからJSONで受けたデータの一部を配列に入れて、 その中に特定の値があるかを確かめたいのですがコードで 来ているせいか上手くいきません。 配列に入れること、またデータが”Tokyo”など文字で帰ってる 場合は検索することが出来ました。 例えば…\u8b1b\u8ac7\u793e\uff92\uff7cという結果から日本語や英語などを 検索することは出来ないのでしょうか? trace(text.indexOf("¥u8b1b¥u8ac7¥u793e",0)); のように書いたり、そのまま単語で指定してもダメでした。 JSONはデコードしています。 AS3です。 どなたかお分かりの方がいましたら、ご教授お願い致します。

    • ベストアンサー
    • Flash
  • 2次元配列の文字の検索について

    お世話になります。今Boggleゲームというもののプログラムを考えているのですが、配列の検索についてお聞きしたいことがあります。 Boggleゲームは、4×4の正方形のマス1つ1つにアルファベットが書いてあるサイコロが入っており、 縦横斜めから英単語がいくつ出来るかを探して競うゲームです。今回は英単語に限らず、指定した文字列がこのルールで見つけられるかを試します。 もしその文字列がこのルールで見つかればtrue、見つからなければfalseを返します。 例えば、 A B C D E F G H I J K L M N O P という2次元配列があり、この中からABGLPを探すとすると、AとBは隣り合っており、BとGは斜めで隣り合っており、GとLも斜めで隣、 LとPは上下で隣なので、ABGLPはOKです。 しかし例えばACBを検索すると、CとBは隣り合っていてもAとCは隣り合ってないので、この時点でアウトです。 ちなみに同じ配列のインデックスの文字は2度使えません。例えば、ABCGBを検索すると、隣り合った文字同士なのでOKですが、同じインデックスにあるBを2度使っているのでアウトです。 以上のルールで、文字1つ1つを検索するプログラムを考えているのですが、どのようにすればいいのかがわかりません。 例えばAFCBを検索するとなると、まずAのまわりにFがあるかどうかを検索するので(Aは角なので)、[0][1],[1][0],[1][1]の3つを探せばいいだけですが(この場合は[1][1]=F)、 次にFの周りにCがあるかを検索すると計8つのインデックスの中身を調べなければなりません(この場合は[0][2]=C)。 そして最後にCの周りにBがあるかどうかで計5つのインデックスの中身を調べます(この場合[0][1]=B)。 常にFの検索のように3×3の検索ならfor文2つで簡単に出来ますが、検索する文字によっては角の検索になったり端の列の検索になったりと検索範囲が変わってしまいます。 しかも同じインデックスの中身は2度使えないのでもしそのインデックスにヒットしたら飛ばさなければなりません。 これをどのように検索すればいいのかがわかりません。全ての可能なケースのfor文を用意するとすごい長さになってしまいます。 どなたか宜しくお願いします。

    • ベストアンサー
    • Java
  • javascriptのmatchで質問です。

    javascriptで入力された文字列の中から、指定した文字の前後の文字がアルファベッド、数字、ひらがな、空白かを判断するものを作成しています。 matchを使って作成を行っているのですが、なかなかうまくいっていないのが現状です。 どなたか知恵をお貸しいただけないでしょうか。 よろしくお願いします。 例 指定文字:1 入力:ABCD1EF 出力:アルファベッドです。 指定文字:う 入力:あいうえお 出力:ひらがなです。 指定文字:あ 入力:あいうえお 出力:前が空白で後ろがひらがなです。 という形にしたいです。

  • C#でのワイルドカードを使った文字検索

    開発初心者です。 文字検索をワイルドカードを使って行いたいと考えています。 例えば、 string x = "ABCDEFGHI" という文字列があったとして 「C***G」という文字列(***はワイルドカード)を検索したいとき、 x.IndexOf(C***G)=2のような結果を出力できるような検索方法を探しています。 ご存知の方がいれば、ご教授宜しくお願いします。

  • javascriptで質問があります!

    こんにちは。 javascriptで、入力された文字列から指定された文字を含む行を抜き出すプログラムを作りたいです。 例: 入力された文字列 : abcd             efghi  指定した文字    :b 出力         :abcd こんな感じのプログラムを作りたいです。正規表現を使えばいけるのかなと思うのですがどなたか知恵をお貸しいただけないでしょうか? よろしくお願いいたします。

  • C#で配列の使い方について教えて下さい(>ε<)/

    C#で配列の使い方について教えて下さい。(>ε<)/ やりたいこととして ・テキストファイルを読み込みます ・複数の指定文字列を探します ・見つかったら“指定文字列+新しい文字列”で置換します。 これを配列を用いてやりたいのですが、いまいちループの使い方がわからなくて・・・ 例えばテキストファイルはこんな形式とします。 [test.txt] あああ いいい ううう AAA BBB CCC 000 111 222 ンンン ヲヲヲ ワワワ [test.cs] string[] array = {"あああ", "000", "ヲヲヲ"}; string[] array2 = {"AAAAAAAAAAAAAAAAAAA", "ぜろぜろぜろ", "長渕長渕長渕長渕長渕長渕長渕"}; ? 指定文字列が上記のようだったとします。 この文字列が見つかったら例えばテキストファイルの中身を あああAAAAAAAAAAAAAAAAAAA いいい ううう AAA BBB CCC 000ぜろぜろぜろ 111 222 ンンン ヲヲヲ長渕長渕長渕長渕長渕長渕長渕 ワワワ このようにリプレースしたいのですが、どのようなループを用いれば良いのでしょうか?

  • 配列の渡し方

    お世話になります。 DBからの検索結果を指定した件数で表示するプログラムを作っています。最初のページはうまく表示できるようになったのですが、次のページを表示する際に検索条件が引き継がれずうまく表示できません。検索条件は配列で持っているのですが、配列の中身ごと次のページに引き渡すにはどうしたら良いのでしょうか? ちなみに現在は下記のようなコードで実行しています。 echo " <a href=\"".$_SERVER["PHP_SELF"]."?p=$next&gender=$genderUrl&area=$areaUrl\"> 次のページ</a>"; 上記のコードで言うと、&areaが配列になります。 &genderは単なる数値なのでうまく引き継がれるのですが、&areaはArray()となるだけでうまく引き継がれません。なお、配列の中身は2バイト文字です。 お手数をお掛けしますがよろしくお願いします。

    • 締切済み
    • PHP
このQ&Aのポイント
  • To be without this character is the worst of all fates. Living without self-respect is like lying awake at night, counting the sins of commission and omission, the trusts betrayed, and the promises broken. You're so much better than that.
  • Living without self-respect is the worst fate imaginable. It means lying awake at night, filled with regret for the trust you've betrayed, the promises you've broken, and the talent you've wasted. You deserve better than that.
  • Not having this character is the ultimate tragedy. It's like lying awake at night, tormented by the sins you've committed and the opportunities you've missed. Don't settle for a life without self-respect. You can do better.
回答を見る