この人頭いいなと思ったエピソード

¥マークの検索について

文字列内から「¥」マークのみを検索してくる方法を探しています。
htmlに書かれた文字列
「~○○○○○\200○○○~」(実際には「~○○○○○¥200○○○~」)
から「¥」マークがあるかどうかを調べようとしています。

var a = "~○○○○○\200○○○~";
if(a.indexOf('\\') > 0){
alert("あるよ");
}
としようとしましたが、¥マークを検知できません。
どのようにすれば検知するようになるでしょうか

A 回答 (5件)

#3 です。


scriptコードにミスがあったので、修正しました。

<p id="Yen">&yen;200</p>
<script type="text/javascript"><!--
var str = document.getElementById('Yen').firstChild.nodeValue;
if (str.indexOf('\u00A5') !== -1) {
alert('あるよ');
}
//--></script>
    • good
    • 0
この回答へのお礼

実装できました!
'\u00A5'とすればよかったのですね。
ありがとうございます

お礼日時:2010/10/15 09:21

別解で。



var YEN=String.fromCharCode(165);
//var YEN=unescape('%A5');
if(a.indexOf(YEN) > 0){

未検証です。

バックスラッシュと円マークの文字コードが違うのは他の方が説明されているとおりです。


変数aの生成(代入)の仕方次第では、
if(a.indexOf('&yen;') > 0){
としないと行けないかもしれません。
(調べてみたところ、innerHTMLでもinnerText/contentTextのどちらも、実体参照を文字に変換した後の物を取得するようです。)
    • good
    • 0
この回答へのお礼

if(a.indexOf('&yen;') > 0){
ではうまくいかなかったのですが、
キャラコードで判別することは出来ました!

お礼日時:2010/10/15 09:22

&yen; は '\u00A5' です。


\ ('\u005C') と等価ではありません。

<p id="Yen">&yen;200</p>
<script type="text/javascript"><!--
var str = document.getElementById('Yen').firstChild.nodeValue;
if (str.indexOf('\u00A5')) { alert('あるよ'); }
//--></script>

10.5 Named character references — HTML5 (including next generation additions still in development)
http://www.whatwg.org/specs/web-apps/current-wor …
    • good
    • 0

>変数aに入れる文字列の内容はこちら側ではいじれない



そうなると単純処理ではむりですね。
\マーク+数字はある種のエスケープシーケンスになり8進数の200、
すなわち10進数の128のコードとして認識されています。
    • good
    • 0

たんじゅんに



var a = "~○○○○○\\200○○○~";

ですね

この回答への補足

変数aに入れる文字列の内容はこちら側ではいじれないので、スクリプトのほうをどうすれば言いか教えていただきたいです。

補足日時:2010/10/14 15:29
    • good
    • 0

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


おすすめ情報