ここから本文です

javascriptのことで質問です。初心者です。

アバター

ID非公開さん

2019/7/1401:00:03

javascriptのことで質問です。初心者です。

以下のようにしてプログラムを打ったのですが、やはり繰り返し部分が反応しないのか、例として、「あいうえおうえ」と打って、「うえ」を検索すると3文字目と6文字目から出すようにしたいです。3文字目から出ましたとか6文字目から出ましたは改行して出します。
よろしくお願いします。

var str1 = prompt("文を入力してください",""); //変数(str1)に検索元の文を入力
var str2 = prompt("検索文字を入力してください",""); //変数(str2)に検索文字を入力
var flag = false; //発見できたか,できなかったの判断に使うフラグを変数(flag)として宣言(初期値はfalse)
var nNext = 0; //検索開始位置(初期値は0)
var nIndex; //検索文字列出現位置
var nLen = str2.length; //検索文字列の長さ(初期化しておく)
console.log("入力した文は「"+str1+"」です"); //検索元の文(文字列)を表示

//繰返し 繰返し条件は変数nIndexが-1(検索文字を見つけられない場合)でない間(何回繰り返すのか不明)
//indexOfを使って検索する
//もし変数nIndex(検索文字列出現位置)に0以上の数値が入った場合,
//コンソールに検索文字列出現位置を表示(インデックスは0番から始まることに注意)
//変数nIndexに変数nLenを足したものを変数nNextに代入
//発見できた場合,変数(flag)をtrueに変更

//もしフラグがfalse(見つからなければ)なら
//見つからなかったことをコンソールに表示

閲覧数:
38
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

loo********さん

2019/7/1519:30:40

質問とざっとコードを見ましたが、
質問内容のindexOfのループ部分がないので
ここの書き方の質問として回答します。

全ての条件を満たすコードではないですが
骨組みとして使えるものです
<html>
<head>
<script type="text/javascript">
var str1 = prompt("文を入力してください","");
var str2 = prompt("検索文字を入力してください","");
var flag = false;
var nNext = 0;
var nIndex = 0;
var nLen = str2.length;
//console.log("入力した文は「" + str1 +"」です");
alert("入力した文は「" + str1 +"」です");

window.onload = function(){
for(cnt=0; nIndex!=-1 || cnt<nLen ; cnt++){
nIndex = str1.indexOf(str2,nNext);
if(nIndex != -1){
alert(nIndex);
}
nNext += nIndex + 1;
}
}
</script>
</head>
<body>
</body>
</html>

色々と加えたいようでしたので、必要な部分だけ作ってあります
console.logは面倒だったので、alertにしてます。
内容は、indexOfで見つからないなら-1がくるのでループ終了
そうでないなら、cntが入力文字の長さを超えなければループして
次のindexOfを実行していきます。

残りはヒントですが、
・「3文字目と6文字目」にするなら見つけた場所に+1
・ifに入った時点でindexOfで見つけているのでFlagをtrueに
・indexOfで1つも見つからなかった場合には、nIndexは-1なのでfalseを出力

この回答は投票によってベストアンサーに選ばれました!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる