文字列に特定のキーワードがある場合です。
該当するキーワードを含み、
それ以降の文字列を削除するにはどうしたら良いでしょうか?
<元の文字列>
<div class="item">商品名【商品ID】【りんご】【春夏秋冬】りんごのジュース 全3種</div>
※同じクラスのタグで複数あります。
▼▼▼ このような文字列にしたい ▼▼▼
<特定のキーワード以降を削除>(特定のキーワードが 【りんご】 の場合)
<div class="item">商品名【商品ID】</div>
特定のキーワドのみを置換することは出来たのですが
質問の件を満たす場合はどうしたら良いでしょうか?
window.onload = function(){ $('.item').each(function(){ var moji = $(this).html(); $(this).html( moji.replace(/【りんご】/g,"") ); }); }
ご教示の程どうぞ宜しくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
質問者さんの実現したいことを行うには、以下の5つの方法があります。
0. substringメソッドを利用する。
0. replaceメソッドを利用する。
0. splitメソッドを利用する。
0. sliceメソッドを利用する。
0. substrメソッドを利用する。
substringメソッドの場合
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>タイトル</title> 6 <style type="text/css"> 7 * { 8 margin: 0; 9 padding: 0; 10 } 11 </style> 12</head> 13<body> 14<div id="box"></div> 15<script> 16 var str = "ごりららっぱりんごごりら"; 17 var word = str.indexOf("りんご"); 18 var result1 = (~word) ? str.substring(0, word) : "該当結果なし。"; 19 document.getElementById("box").textContent = "結果1: " + result1; 20</script> 21</body> 22</html>
replaceメソッドの場合
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>タイトル</title> 6 <style type="text/css"> 7 * { 8 margin: 0; 9 padding: 0; 10 } 11 </style> 12</head> 13<body> 14<div id="box"></div> 15<script> 16 var str = "ごりららっぱりんごごりら"; 17 var word = /りんご.*/; 18 var result2 = (~str.search(word)) ? str.replace(word, "") : "該当結果なし。"; 19 document.getElementById("box").textContent = "結果2: " + result2; 20</script> 21</body> 22</html>
splitメソッドの場合
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>タイトル</title> 6 <style type="text/css"> 7 * { 8 margin: 0; 9 padding: 0; 10 } 11 </style> 12</head> 13<body> 14<div id="box"></div> 15<script> 16 var str = "ごりららっぱりんごごりら"; 17 var result3 = (str.split("りんご").length !== 1) ? str.split("りんご")[0] : "該当結果なし。"; 18 document.getElementById("box").textContent = "結果3: " + result3; 19</script> 20</body> 21</html>
sliceメソッドの場合
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>タイトル</title> 6 <style type="text/css"> 7 * { 8 margin: 0; 9 padding: 0; 10 } 11 </style> 12</head> 13<body> 14<div id="box"></div> 15<script> 16 var str = "ごりららっぱりんごごりら"; 17 var word = str.indexOf("りんご"); 18 var result4 = (~word) ? str.slice(0, word) : "該当結果なし。"; 19 document.getElementById("box").textContent = "結果4: " + result4; 20</script> 21</body> 22</html>
substrメソッドの場合
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>タイトル</title> 6 <style type="text/css"> 7 * { 8 margin: 0; 9 padding: 0; 10 } 11 </style> 12</head> 13<body> 14<div id="box"></div> 15<script> 16 var str = "ごりららっぱりんごごりら"; 17 var word = str.indexOf("りんご"); 18 var result5 = (~word) ? str.substr(0, word) : "該当結果なし。"; 19 document.getElementById("box").textContent = "結果5: " + result5; 20</script> 21</body> 22</html>
投稿2017/02/28 10:16
編集2017/03/02 08:54総合スコア14731
0
ベストアンサー
String.prototype.slice
jQuery.prototype.text
を併用。
HTML
1<div class="item">商品名【商品ID】【りんご】【春夏秋冬】りんごのジュース 全3種</div> 2<div class="item">商品名【商品ID】【りんご】【春夏秋冬】りんごのジュース 全3種</div> 3<div class="item">商品名【商品ID】【バナナ】【春夏秋冬】バナナのジュース 全3種</div> 4<div class="item">商品名【商品ID】【オレンジ】【春夏秋冬】オレンジのジュース 全3種</div> 5 6<script> 7'use strict'; 8jQuery('.item').text(function (i, string) { 9 var index = string.indexOf('【りんご】'); 10 return index !== -1 ? string.slice(0, index) : string; 11}); 12</script>
CharacterData.prototype.deleteData
CharacterData.prototype.deleteData
は古くからある DOM API ですが、使っているコードはほとんど見かけませんね。
NodeList.prototype.forEach
を併用。
JavaScript
1document.querySelectorAll('.item').forEach(function (element) { 2 var textNode = element.firstChild, 3 string = textNode.data, 4 index = string.indexOf('【りんご】'); 5 6 if (index !== -1) { 7 textNode.deleteData(index, string.length); 8 } 9});
更新履歴
- 2017/02/28 19:37 CharacterData.prototype.deleteData のコードを追記
- 2017/02/28 20:51 jsfiddleのサンプル追加。CharacterData.prototype.deleteData のコードで検索語が見つからなかった場合に DOMException エラーが発生するバグ修正。
- 2017/02/28 21:02 String.prototype.slice のコードで検索語が見つからなかった場合にテキストノード値の末尾1文字を削ってしまうバグ修正。
Re: miconear さん
投稿2017/02/28 10:14
編集2017/02/28 12:02総合スコア18162
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/04 12:20
0
$(this).text($(this).text().split('【りんご】')[0])
投稿2017/02/28 10:00
総合スコア4267
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/28 10:23
2017/02/28 10:44
2017/02/28 11:58
2017/03/02 09:02 編集
2017/03/03 05:37