プロが教える店舗&オフィスのセキュリティ対策術

変数に格納された文字列から任意の文字ついて<strong>タグを付けて置き換える方法
が分からなくて困っています

具体的に言うと

文字列stに対して変数keyに格納された文字列にマッチした全て強調する方法...

ex)
st="4月の16日の昼の弁当のおかず"
key="の"

の結果が

st="4月<strong>の</strong>16日<strong>の</strong>昼の弁当<strong>の</strong>おかず"

となるスクリプトを作成したいのです。
どなたかよろしくお願い致します。

A 回答 (4件)

正規表現オブジェクトと.replace()メソッドを利用すればよいと思います。


質問文の例を元に、実例を挙げます。

<script type="text/javascript"><!--
st="4月の16日の昼の弁当のおかず";
key="の";

regexp= new RegExp(key,"g");
st=st.replace(regexp,"<strong>"+key+"</"+"strong>");
//-->
</script>

簡単に解説すると、3行目でregexpという名前の正規表現オブジェクトを作成しています。 ここでは、検索対象文字列を変数keyに格納されている値とし、gオプションでマッチするすべての部分を対象にするようにしています。
その次の行で、変数stの中にある変数keyと一致する部分を正規表現オブジェクトを利用して探し出し、その部分をstrong要素で囲った表記に置き換えています。

RegExp()では、第1引数が検索対象文字列、第2引数が検索時のオプションになります。
.replace()メソッドでは、第1引数が検索対象文字列(正規表現も利用可)、第2引数が検索対象文字列の置換後の文字列になります。

一応、IE6、Netscape 7、Opera 6.05で動作確認してあります。
参考になれば幸いです。
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼が遅れましたが、
早いお返事を頂き、とても助かりました。

今後もよろしくお願い致します

お礼日時:2003/04/17 09:55

>正規表現は奥がふかいですなぁ...


ANo.#2の補足をください。(・;)
    • good
    • 0

となると



<HTML>
<HEAD>
<TITLE>(/_ _ )/♪へ(-。-へ)♪(/_ _ )/ウ</TITLE>
</HEAD>
<BODY>

<P><INPUT id=text1 name=text1 style="WIDTH: 257px; HEIGHT: 22px" size=33 value=4月の16日の昼の弁当のおかず></P>
<P><INPUT id=text2 name=text2 value=の></P>
<P></P>

<SCRIPT LANGUAGE=javascript>
<!--
var key = text2.value;
var r, ss;
var st = text1.value;
ss = st.split("の");
r="";
for(i=0;i<ss.length-1;i++){
if(ss[i]=="昼"){
r = r + ss[i] + key;
}else{
r = r + ss[i] + "<strong>" + key + "</strong>";
}
}
r = r + ss[i]
window.document.write(r);
//-->
</SCRIPT>
</BODY>
</HTML>

こんな感じはどうでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます

正規表現は奥がふかいですなぁ...

お礼日時:2003/04/17 09:53

昼の弁当


 ↑
これは強調させないんですね?
    • good
    • 0

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