• 締切済み

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>

みんなの回答

回答No.3

#2です。 ミスった。 function ary1sort (a, b) { return a[1] > b[1]; }

回答No.2

蛇足もあれば、不足もあれば、・・・。 <!DOCTYPE html> <meta charset="utf-8"> <title></title> <body> <textarea> 明日の時刻のお知らせ 開始時間:10時30分 受付開始は10時00分からとなっております。 遅れないようにお願いいたします。 </textarea> <script> function ary1sort (a, b) {  return a[1] - b[1]; } var reg = /(\d{1,2})[時:](\d{1,2})[分\D]/gm; var text = document.querySelector ('textarea').value; var result = []; var c; while (c = reg.exec (text))  result.push ([   c[0],   parseInt (c[1], 10) * 60 + parseInt (c[2], 10),   c[1] + ':' + c[2]  ]); result.sort (ary1sort); alert ([result[0][2], result[result.length-1][2]].join (' - ')); </script>

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

いろいろ問題ありすぎてどうしようもないですが 「開始時間:10時30分」から「\d{1,2}:\d{1,2}」じゃ ヒットしないんじゃない?

関連するQ&A