dポイントプレゼントキャンペーン実施中!

テキストエリアに入力された文章を、改行ごとで配列に格納
その後、特定の文字を検索し、特定の文字がある配列を見つけて
見つかったものに処理をかけたいです
現在、配列に格納するところまでできているのですが、その後の文字を検索するところで躓いてます。
配列を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>

A 回答 (3件)

#2です。


ミスった。
function ary1sort (a, b) {
return a[1] > b[1];
}
    • good
    • 0

蛇足もあれば、不足もあれば、・・・。



<!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>
    • good
    • 0

いろいろ問題ありすぎてどうしようもないですが



「開始時間:10時30分」から「\d{1,2}:\d{1,2}」じゃ
ヒットしないんじゃない?
    • good
    • 0

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