2010-03-31 81 views
0

我需要更換一些文字,是在body標籤中的頁面上。我使用的是JavaScript,但如果需要,可以使用jQuery。我基本上需要用TEST ®或測試®替換測試®(測試與註冊商標)與測試®並且它甚至可能用測試®或用測試測試用測試®。我可以將它們大寫,但它不喜歡用®符號爲我工作,它希望將重複項放在已有的符號上。具有單詞測試或測試應該測試®甚至不測試®如果是複數頁面上基本上什麼。任何幫助表示讚賞。Javascript或jQuery的替換文本

編輯:
所以現在我有這樣的:

var html = $('body').html(); 
var html = html.replace(/realtor(s)?(®)?/gi, function(m, s1, s2){ 
    var s = s1?s1.toUpperCase():""; 
    var reg = s2?s2:'®'; 
    return "REALTOR"+s+reg; 
}); 
$('body').html(html); 

它的工作以及其他比它複製上已經有他們如何不向任何想法的人的®?

+0

只是谷歌的JavaScript的文本替換,第一個鏈接出現tizag.com那已經足夠完成的話,好點尖尖的 – ant 2010-03-31 13:02:47

+1

問題與使用'® '或任何HTML轉義代碼是瀏覽器將其轉換爲實際符號。要使用字符串函數獲得該符號,請使用「®」,但如果您使用的是匹配,替換等,則必須使用unicode值「\ u00ae」。請參閱下面的答案。 – Mottie 2010-03-31 14:09:45

回答

3

正如其他人已經說過,你將無法匹配®,你需要匹配
\u00ae

您所提供的代碼需要改爲:

var html = $('body').html(); 
var html = html.replace(/realtor(s)?(\u00ae)?/gi, function(m, s1, s2){ 
    var s = s1?s1.toUpperCase():""; 
    var reg = s2?s2:'®'; 
    return "REALTOR"+s+reg; 
}); 
$('body').html(html); 
+0

謝謝你的工作完美。 – ngreenwood6 2010-03-31 15:13:59

0

這裏最棘手的部分是要匹配的®,這是一個Unicode字符,我猜... 您是否嘗試過的明顯嗎?

var newStr = str.replace(/test(s)?®?/gi, function(m, s1){ 
    var s = s1?s1.toUpperCase():""; 
    return "TEST"+s+"®"; 
}); 

如果問題是®不符,請嘗試使用它的Unicode字符數:

/test(s)?\u00ae/ 

很抱歉,如果休息不工作,我想你的更換已經工作,你只需要也匹配®,以免重複。

+0

似乎沒有工作。對你起作用嗎? – ngreenwood6 2010-03-31 13:29:28

0

而不是使用備用庫從頭開始創建試試的。我使用PHP進行開發,因此使用JavaScript中具有相同方法的庫是一種生命保護程序。

PHP.JS Library

var newReplaced = $P.str_replace("find","replace",varSearch);

+0

-1(你只是看不到它......因爲我沒票了)。自我提升永遠是不好的,但你的可怕。 – 2010-03-31 14:13:07

+0

我將這個庫與jQuery結合使用。沒有真正的問題。 – 2010-04-02 14:35:37

1

要擴大jAndy的回答,試試這個:

$("div, p, span").each(function(){ 
    o = $(this); 
    o.html(o.text().replace(/test(|s)\u00ae/gi, function($1){ 
    return($1.toUpperCase()); 
    })); 
}); 

使用你提供的代碼,試試這個:

$(document).ready(function(){ 
$('body').html($('body').html().replace(/realtor(|s)\u00ae/gi, function($1){ 
    return($1.toUpperCase()); 
})); 
}) 
+0

工程很好唯一的問題是,如果最後沒有®(例如房地產經紀人),它不會在那裏添加®。我需要它來做到這一點。有任何想法嗎? – ngreenwood6 2010-03-31 14:49:17

+0

給你一個加號,因爲你幫助實際得到解決方案。 – ngreenwood6 2010-03-31 15:14:20

+0

您的問題編寫的方式似乎®已經存在,因此此替換函數將查找所有realtor®或realtors®的實例並使其成爲大寫,因此您不需要添加另一個「®」。無論如何,很高興你有你的解決方案,並感謝upvote。 – Mottie 2010-03-31 16:00:37