質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

4回答

3785閲覧

javascriptでの記号を含む文字列の検索

wolf2

総合スコア19

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/03/11 14:49

編集2018/03/11 15:58

初めまして。

現在jsにて記号(・ ー スペース)を含む文字列を検索するロジックを
実装しようとしているのですが上手くいかず、皆様はこんな検索の時どんな
方法を用いているのかお知恵をお借りしたく質問させて頂きました。

現在の実装ではindexofを使って検索しようとしているのですが、
上記の記号が含まれている文字列は検索できない状況です。

何卒お力添えのほど宜しくお願い致します。

////////////////////////////////////////////////////

※上記勘違いしておりました。
実際は以下の様にJQueryのセレクタで上記記号を含むidを
指定しようとした場合にヒットしないという状況でした。
この場合どの様にすればヒットするのでしょうか。

html

1<tr id="test 1"></tr> 2<tr id="test_1"></tr> 3<tr id="test.1"></tr>

js

1$("tr:has(#" + test 1 + ")").show(); 2$("tr:has(#" + test_1 + ")").show(); 3$("tr:has(#" + test.1 + ")").show();

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/03/11 14:49

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
wolf2

2018/03/11 15:03 編集

ご返信有難う御座います。 何がどのようにかは書いてあります通りindexofを使っても記号を含む文字列が検索できない、コードのどの部分で詰まっているかもそれに紐付いておりますが記号を含む文字列がindexofを使っての実装では実現出来ないのでそれ以外の方法はあるかと書いてあります。
guest

回答4

0

下記コードを試しましたが、普通に検索できました。

JavaScript

1const str = "この文字列は「・」と「ー」と「 」(スペース)を含みます。"; 2console.log(str.indexOf("・")); 3console.log(str.indexOf("ー")); 4console.log(str.indexOf(" "));

paiza.ioでの実行結果

うまくいかないというのであれば、特定のコード、特定の環境(ブラウザ)でのみ発生している可能性があります。その場合は、実際のコードや試した環境などを示して貰わない限り、誰も解決策を示すことはできません。

投稿2018/03/11 15:10

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wolf2

2018/03/11 15:51

ご返信有難う御座います。 すいません、コードについて勘違いしておりまして indexof部分はちゃんと動いておりました。 ただ、本文を編集致しますがJQueryで上記記号を含むIDをセレクタで 指定した場合にヒットしないという状況でした。 申し訳ございません。
guest

0

indexOf を使うこともあるし、match を使うこともあります。検索結果をどう使うのかであったり、検索文字列をどう扱うかによって使い分けます。


html

1<tr id="test 1"></tr> // ダメ文法違反 2<tr id="test_1"></tr> // OK 3<tr id="test.1"></tr> // 一応OK

javascript

1 2$("tr#test_1").show(); 3$("tr#test.1").show();

投稿2018/03/11 15:07

編集2018/03/11 16:16
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wolf2

2018/03/11 15:51

ご返信有難う御座います。 すいません、コードについて勘違いしておりまして indexof部分はちゃんと動いておりました。 ただ、本文を編集致しますがJQueryで上記記号を含むIDをセレクタで 指定した場合にヒットしないという状況でした。 申し訳ございません。
退会済みユーザー

退会済みユーザー

2018/03/11 16:17 編集

提示されたコードは、HTMLの文法に違反しています。
guest

0

例を用いて試したら、下記のような結果になりました。

HTML

1 <div id="test_space a">1</div> 2 <div id="test_space">2<a>3</a></div> 3 <div id="test_dot.a">4</div> 4 <div id="test_dot" class="a">5</div>

javascript

1$(function(){ 2 console.log($('#test_space a').text());// 3 3 console.log($('div[id="test_space a"]').text());// 1(取得できてしまった…) 4 console.log($('#test_dot.a').text());// 5 5 console.log($('div[id="test_dot.a"]').text());// 4 6})

半角の場合は、子要素を検索する。
ドットがあると、クラスとして判定する。
一応取得出来る書き方はある(ドットについてはw3.orgでもOKらしい)が、クラスと混在するため、あまり使用しない方がいいと思います。
タグの文字列で取得すれば、スペースの時も取得出来てしまいましたが、本来の用途としてはNGですね。

投稿2018/03/11 16:37

編集2018/03/11 17:45
kszk311

総合スコア3404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

HTML5において idに空白文字は使えません。

【[HTML, CSS, JavaScript] id名/class名に使用できる文字の種類 · GitHub】
https://gist.github.com/think49/d8fbcf7f1c743e21bc79bb7d16178cad

HTML Living Standard (通称 HTML 5) ではid属性値、class属性値に対して空白文字を除く全ての文字を使用できます。


また、少なくとも文字列として渡さないと取得できないでしょう。

js

1// $("tr:has(#test 1)").show(); 2 $("tr:has(#test_1)").show(); // 例示のHTMLでは表示されない。(tr自身が#test_1のため) 3// $("tr:has(#test.1)").show(); // CSSが「.」をid名として許容しない 4```**動くサンプル:**[https://jsfiddle.net/5uwfdkpz/1/](https://jsfiddle.net/5uwfdkpz/1/)

投稿2018/03/11 16:08

編集2018/03/11 16:14
kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wolf2

2018/03/11 16:30

HTML5でのidに空白が使えないのは盲点でした…そうなるとロジックをもっと遡ったところから見直さないとダメそうです。ロジック変更の糸口が見えました。有難う御座います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問