2016-07-12 9 views
0

ウェブサイトの複数の単語を他の単語に置き換えたいつまり、source単語のすべてのインスタンスを検索し、target単語に置き換えることに興味があります。JavaScriptを山形に置き換えて山を作る

サンプルケース:

ソース | ターゲット

モグラ塚=>マウンテン

グリーン=>グレー

グーグル=><a href="http://google.com">

サシャ=>モニカ

サッカー=>サッカー

+0

'ctrl-f'?あなたはコードベースでこれを行うことができますか? – depperm

+0

javascriptの正規表現を使用して検索と置換を行うプログラムを書くことができます。上記のようにnotepad ++やctrl + fなどのエディタを使用する別の方法もあります。 – WitVault

+0

現在、私は交換のたびにこれを使用しています: https://jsfiddle.net/p4Lmea6v/ しかし、最初の投稿のように多くの置換えが必要です。 – Steelclover

答えて

0

JSある:

function replaceWords() { 
var toReplace = [ 
    ["Green","Grey"], 
    ["Google","<a href='http://google.com'>"] 
]; 
var input = document.getElementById("content").innerHTML; 
console.log("Input: " + input); 
for (var i = 0; i < toReplace.length; i++) { 
    var reg = new RegExp(toReplace[i][0],"g"); 
    input = input.replace(reg,toReplace[i][1]); 
} 
document.getElementById("content").innerHTML = input; 

}。

replaceWords();

+0

は魅力のようです - ありがとう – Steelclover

+0

あなたの言葉がHTML属性に現れたり、HTMLタグの部分文字列などならどうしますか?私は、DOMを繰り返し、テキストノードのみを置き換えることをお勧めします。 –

1

これは多少あります半分の答えのこれは基本的なプロセスを示していますが、このようなプロセスにおける固有の困難のいくつかを示しています。大文字を検出して置換えを適切にフォーマットするのは多少集中的です(ケースバイケースのHow can I test if a letter in a string is uppercase or lowercase using JavaScript?など)。また、テキストノードを扱う場合、innerHTMLはオプションではないので、Googleの代わりはHTMLの代わりにプレーンテキストとして出力されます。

TLDR - これを行うにはJavaScriptを使用しない別の方法がある場合は、そのようにしてください。ここ

var body = document.querySelector('body') 
 

 
function textNodesUnder(el){ 
 
    var n, a=[], walk=document.createTreeWalker(el,NodeFilter.SHOW_TEXT,null,false); 
 
    while(n=walk.nextNode()) a.push(n); 
 
    return a; 
 
} 
 

 
function doReplacements(txt){ 
 
    txt = txt.replace(/sascha/gi, 'monika') 
 
    txt = txt.replace(/mountain/gi, 'molehill') 
 
    txt = txt.replace(/football/gi, 'soccer') 
 
    txt = txt.replace(/google/gi, '<a href="http://www.google.com">google</a>') 
 
    console.log(txt) 
 
    return txt 
 
} 
 

 
var textnodes = textNodesUnder(body), 
 
    len = textnodes.length, 
 
    i = -1, node 
 

 
console.log(textnodes) 
 

 
while(++i < len){ 
 
    node = textnodes[i] 
 
    
 
    node.textContent = doReplacements(node.textContent) 
 
}
<div>Mountains of Sascha</div> 
 
<h1>Playing football, google it.</h1> 
 
<p>Sascha Mountain football google</p>