我已經有點了解到JAVASCRIPT的正規化中的搜尋和取代
但是如果小弟想要將一個網頁全部內容中
所有有關(例如:有關-RA取代成小雨、TS取代成雷聲)同時取代
請問一下這程式碼要怎樣寫呢?
小弟在網路查到可以用下列程式碼取代
<script type="text/javascript">
var str="Visit Microsoft!";
document.write(str.replace("Microsoft", "W3Schools"));
</script>
但是他好像一次只能一個
如果我想要多個要怎樣寫呢??
以下是用do while迴圈的作法來處理...希望合用~
<pre class="c" name="code">
<script type="text/javascript">
var strOld='ABC-RADEFGTS -RA AAAEZDADFADTSWEFADFA-RAdfjip-RApjierewr-RAfIIIIDDAATSRAdfasdfsdf-RA';
var strNew='';
function strReplaceTest(arg){
strNew=arg;
do{
strNew=strNew.replace('-RA','小雨');
}while(strNew.indexOf('-RA')!=-1);
do{
strNew=strNew.replace('TS','雷聲');
}while(strNew.indexOf('TS')!=-1);
alert('原始字串為:\t'+arg+'\n\n取後後字串為:\t'+strNew);
}
window.onLoad=strReplaceTest(strOld);
</script>
這部份var strOld='ABC-RADEFGTS -RA AAAEZDADFADTSWEFADFA-RAdfjip-RApjierewr-RAfIIIIDDAATSRAdfasdfsdf-RA';
所搜尋的字串
那有辦法可以整個網頁的文字內容嗎??
那有辦法可以整個網頁的文字內容嗎??
可以的,請將下列源碼存成aaa.html測試看看~
<pre class="c" name="code">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var strOld='';var strNew='';
function strReplaceTest(arg){
strNew=arg;
do{
strNew=strNew.replace('-RA','小雨');
}while(strNew.indexOf('-RA')!=-1);
do{
strNew=strNew.replace('TS','雷聲');
}while(strNew.indexOf('TS')!=-1);
alert('原始字串為:\t'+arg+'\n\n取後後字串為:\t'+strNew);
}
function init(){
$.get('aaa.html', function(data) {
$('.result').html(data);
var pos=data.indexOf('')+138;
strOld=data.substr(pos,data.length-pos);
strReplaceTest(strOld);
});
}
window.onLoad=init();
</script>
<h3>TS這ERA是-RA測試標題RRA</h3>
<p>這是測試-RA本文區本文區TS</p>
<p>這是-RA測試TS版權宣告</p>
會出現這個錯誤訊息呢....是怎麼了嗎??
會出現這個錯誤訊息呢....是怎麼了嗎??
感謝大大無私分享嚕...上面的訊息問題我已經知道是怎回事嚕
但我想再請教一下
如果我要改成不是跳出訊息視窗
而是直接出現在網頁上的話
那我要改那一段程式碼呢??
如果有出現亂碼的話,那表示您測試的網頁忘了把文件編碼設為"UTF-8"...
若要直接出現在網頁上的話可以參考下列代碼...
<pre class="c" name="code">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var strOld='';var strNew='';
$(document).ready(function() {
strOld=$('.oldStrArea').html();
strNew=strReplaceTest(strOld);
alert(strNew);
$('.newStrArea').html(strNew);
});
function strReplaceTest(arg){
var tmpStr=arg;
do{
tmpStr=tmpStr.replace('-RA','小雨');
}while(tmpStr.indexOf('-RA')!=-1);
do{
tmpStr=tmpStr.replace('TS','雷聲');
}while(tmpStr.indexOf('TS')!=-1);
return tmpStr;
}
</script>
<h3>原始字串:</h3>
<div class="oldStrArea">
aaab-RAbbccTS這ERA是-RA測試標題RRA<br />
TS這ERA是-RA測試標題RRA
</div>
<hr />
<h3>取代後字串:</h3>
<div class="newStrArea"></div>
那出現在亂碼的地方小弟我已經知道怎回事嚕
剩下部分我會再測試一下
感謝大大無私的提供你很多寶貴的意見喔
謝謝您嚕
ccutmis大大您好:
如果不想要出現警告訊息
也不用經過警告訊息就直接在網頁內容上執行轉換的話
我需要在程式碼中做那些調整呢??
怎麼調整喔QQ...請直接看範例吧~
<pre class="c" name="code">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var strOld='';var strNew='';
$(document).ready(function() {
strOld=$('body').html();
strNew=strReplaceTest(strOld);
$('body').html(strNew);
});
function strReplaceTest(arg){
var tmpStr=arg;
do{
tmpStr=tmpStr.replace('-RA','小雨');
}while(tmpStr.indexOf('-RA')!=-1);
do{
tmpStr=tmpStr.replace('TS','雷聲');
}while(tmpStr.indexOf('TS')!=-1);
return tmpStr;
}
</script>
<h3>恩...-RA這次改為TS直接RA轉換-RA</h3>
<div class="oldStrArea">aaab-RAbbccTS這ERA是-RA測試標題RRA<br />TS這ERA是-RA測試標題RRA</div>
我用jQuery在網頁載入後把body標千裡的html內容指定給變數strOld,再把strReplaceTest(strOld)的結果指定給變數strNew,最後把strNew變數內容再放回body標千裡...以上。範例很簡單,希望有幫助~
大大您好經過測試已經可以嚕
可否再請教一次問題
那如果我條件中如果有出現BR轉換成霧
和VCTS要轉換成視區雷聲
但BR會和HTML中的</BR>誤判
而因為VCTS中的TS又會和我其中一個條件的TS互衝
導致只會顯示TS的條件,那這樣如果我要VCTS和TS分開轉換顯示要怎樣轉換顯示呢(VCTS是轉換成視區雷聲)
寫程式最有趣的地方就是看到它可以按照作者的想法具現化,所以在編寫的過程您需要動動腦去想怎麼解決遇到的問題,比方講您要把BR取代成另一個名詞,但是也會影響到<BR />標籤(請注意是<BR />非</BR>) 那我會在原本的字串取代函式執行前,先把<br>標籤取代成一個比較不會重覆的名詞(例如: {||||} ) 再進行原本的字串取代函式,等轉換完後,再把 {||||} 取代為<br>
大致上的思路是這樣,請參考下列範例:
<pre class="c" name="code"><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var strOld='';var strNew='';
$(document).ready(function() {
strOld=$('body').html();
alert(strOld);
strNew=strReplaceTest(strOld,'<br>','{||||}'); strNew=strReplaceTest(strNew,'BR','霧');
strNew=strReplaceTest(strNew,'-RA','小雨');strNew=strReplaceTest(strNew,'VCTS','視區雷聲');
strNew=strReplaceTest(strNew,'TS','雷聲');strNew=strReplaceTest(strNew,'{||||}','<br>');
$('body').html(strNew);
alert(strNew);
});
function strReplaceTest(arg,targetStr,replaceStr){
var tmpStr=arg;
do{
tmpStr=tmpStr.replace(targetStr,replaceStr);
}while(tmpStr.indexOf(targetStr)!=-1);
return tmpStr;
}
</script>
<h3>恩.BR..-RA這TS次VCTS改為TS直接RA轉換-RA</h3>
<div class="oldStrArea">aaab-RAbbccTS這ERABR是-RA測試VCTS標題RRA<BR />TS這ERA是-RA測試標題RRA</div>
經過測試之後還是會被取代呢??所以好像不可行。
您要的結果不是 "TS"轉成"雷聲","VCTS"轉成"視區雷聲","BR"轉成"霧","<BR />"則不作轉換...?
...如果是的話應該是有轉換的呀~但若你指的是你自己改寫的程式的話,那就要請你把源碼貼出來才有辦法判斷是哪邊的問題了。我把要轉換的內容再改單純點~也把javascript的源碼再做了些簡潔化,但思路跟原本的是相同的,如下所示:
<pre class="c" name="code">
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var tarArr=Array('<br>','BR','-RA','VCTS','TS','{||||}');
var repArr=Array('{||||}','霧','小雨','視區','雷聲','<br>');
$(document).ready(function() {
var strOld=$('body').html();alert('轉換前'+strOld);
for(var i=0;i<tarArr.length;i++) strOld=strReplaceTest(strOld,tarArr[i],repArr[i]);
$('body').html(strOld);alert('轉換後'+strOld);
});
function strReplaceTest(arg,targetStr,replaceStr){
var tmpStr=arg;
do{tmpStr=tmpStr.replace(targetStr,replaceStr);}while(tmpStr.indexOf(targetStr)!=-1);
return tmpStr;
}
</script>
<style type="text/css">h3{border:solid 1px #aaa;margin:10px;}</style>
<h3>-RA</h3><h3>BR <BR /> BR</h3><h3>TS</h3><h3>VCTS</h3>
大大測試上面那一程式碼的時侯會把</br>的部分也顯示出來,所以我該測是您在第九則留言裡面中的程式碼,但我用另一台電腦程式的時候會出現在下列錯誤訊息,錯誤訊息為:物件不支援此屬性或方法,程式就無法執行成功嚕,請問是怎麼了嗎?
大大測試上面那一程式碼的時侯會把</br>的部分也顯示出來
怎會有</br>這種標千?...BR標千(空標千)只有<br>或<br />,不懂為何的話,請自行找查HTML教學。關於錯誤訊息的描述不夠,故無法幫上忙~最好是把您有問題的源碼貼出來,才有辦法找問題,這裡是幫幫忙,不是程式代寫中心。
這位同學,就算你不知道可以這樣寫:
document.write(str.replace("RA", "小雨").replace("TS", "雷聲"));
也該猜得到可以這樣寫吧?
str.replace("RA", "小雨");
str.replace("TS", "雷聲");
document.write(str);
希望你不是在讀資訊相關科系,要不然後面的日子可能會很累喔 ...
您好!
不恥下問
注音一式 ㄅㄨˋ ㄔˇ ㄒ|ㄚˋ ㄨㄣˋ
漢語拼音 b ch xi w n 注音二式 b ch shi w n語出論語˙公冶長:「子曰:『敏而好學,不恥下問,是以謂之文也。』」不以向身分較低微、或是學問較自己淺陋的人求教為羞恥。老殘遊記˙第七回:「閣下既不恥下問,弟先須請宗旨何如?」
成語不要亂用 有時候會很失禮的
可以上教育部辭典網站查詢
http://dict.revised.moe.edu.tw/