2014-10-12 223 views
0

如何將每個單詞替換爲另一個單詞並保留格式,如換行符,製表符,空格字符等?如何用另一個單詞替換文本正文中的每個單詞?

我認爲解決方案可能是RegEx,但也可能需要一個函數。我也想匹配這個詞的長度。 UPDATE如果我能以某種方式獲得單詞的長度,我不需要匹配單詞的長度。請參閱本文末尾的註釋。

這是我到目前爲止在ActionScript 3中的內容。如果刪除變量的強類型,JavaScript將是相同的。

public function replaceText(content:String, token:String):String { 
    var words:Array = content ? content.split(/\W/g) : []; 
    var word:String; 
    var length:int = words.length; 
    var replacement:String; 
    var output:Array = []; 

    for (var i:int=0;i<length;i++) { 
     word = words[i]; 

     if (word.length==1) { 
      replacement = token.charAt(0); 
     } 
     else if (word.length==2 && token.length>1) { 
      replacement = token.charAt(0) + token.charAt(token.length-1); 
     } 
     else if (word.length==3 && token.length>2) { 
      replacement = token.charAt(0) + token.charAt(1) + token.charAt(token.length-1); 
     } 
     else if (word.length==4 && token.length>3) { 
      replacement = token.charAt(0) + token.charAt(1) + token.charAt(2) + token.charAt(token.length-1); 
     } 
     else { 
      replacement = token; 
     } 

     output.push(replacement); 
    } 

    return output.join(" "); 

} 

這裏是輸入:

「敏捷的棕色狐狸跳過懶狗」是包含了所有的英文字母的英文 全字母短句,一個短語。它 用於顯示字體和測試打字機和計算機鍵盤, 和其他涉及英文字母中所有字母的應用程序。由於其簡潔和一致性,它已成爲廣爲人知的 。

在電腦的時代,這種普拉姆通常用於顯示字體 樣品和測試電腦鍵盤。 Microsoft Word有一個 命令,在命令= rand()以及Office 2007及更高版本中使用 command = rand.old()時,可以在Office 2003, 以上的版本中自動輸入該句子。

這是輸出。如果我進入令牌,「蜜蜂」的結果是:

蜜蜂BES蜜蜂蜜蜂BES蜜蜂蜜蜂BES蜜蜂BES蜜蜂BS BS蜜蜂蜜蜂 蜜蜂b蜜蜂蜜蜂蜜蜂BES BS BES蜜蜂BS BES蜜蜂蜜蜂BS BS蜜蜂BS 蜜蜂蜂BES BS蜜蜂蜂BES蜜蜂的蜜蜂的蜜蜂BES BS蜜蜂的蜜蜂的蜜蜂 BES BS BES蜜蜂BS BES蜜蜂的蜜蜂的蜜蜂的蜜蜂BS BES蜜蜂BES蜜蜂蜂 BS BES蜜蜂的蜜蜂的蜜蜂的蜜蜂的蜜蜂BS BES BES BS蜜蜂的蜜蜂的蜜蜂蜜蜂BS 蜜蜂蜂BS蜜蜂的蜜蜂的蜜蜂BES BES蜜蜂的蜜蜂的蜜蜂的蜜蜂的蜜蜂的蜜蜂BES b蜜蜂BS蜜蜂蜂BES蜜蜂蜂BS蜜蜂基地臺BS1的蜜蜂的蜜蜂的蜜蜂的蜜蜂 BES蜜蜂的蜜蜂的蜜蜂的蜜蜂的蜜蜂的蜜蜂BES BS蜜蜂蜂BES蜜蜂蜂bes 蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂

注意格式和標點缺失。其實,所有不是一個字的東西都沒有了。我想保留所有內容,但用「蜜蜂」或我選擇的其他詞替換每個詞。

UPDATE:
其實,我可以做這樣的事情上運行一個函數與正則表達式替換?所以一個content.replace(/^\ W/g,myFunction)?

或者我能找到所有的單詞並用單詞的長度替換它們嗎?所以,「快速的棕色狐狸跳躍......」變成了「3 5 5 3 4 ...」。那麼我可以用我的字代替數字?

回答

3

此代碼:

var text = ' "The quick brown fox jumps over the lazy dog" is an English-language pangram—a phrase that contains all of the letters of the alphabet. It is used to show fonts and to test typewriters and computer keyboards, and in other applications involving all of the letters in the English alphabet. Owing to its brevity and coherence, it has become widely known.' 
    + "\n\n" + 
    ' In the age of computers, this pangram is commonly used to display font samples and for testing computer keyboards. Microsoft Word has a command to auto-type the sentence, in versions up to Office 2003, using the command =rand(), and in Office 2007 and later using the command =rand.old().' 
    + "\n"; 

    var token = 'bees'; 

    text = text.replace(/\b\w\b/g, token.charAt(0)); 
    text = text.replace(/\b\w{2}\b/g, token.charAt(0) + token.charAt(token.length-1)); 
    text = text.replace(/\b\w{3}\b/g, token.slice(0,2) + token.charAt(token.length-1)); 
    text = text.replace(/\b\w{4,}\b/g, token); 

    console.log(text); 

得到以下輸出:

「BES蜜蜂蜂BES蜜蜂蜂BES蜜蜂BES」 BS BS蜜蜂 - 蜜蜂蜂-B蜜蜂的蜜蜂的蜜蜂BES BS BES蜜蜂BS蜜蜂。 bs bs bes bes bes bes bes bes bes bes bes bes bes bees蜜蜂,bes bes bees bees bes bes bes bes bes bes蜜蜂。蜜蜂是蜜蜂蜜蜂,蜜蜂是蜜蜂蜜蜂。

BS BES百世BS蜜蜂,蜜蜂蜜蜂BS蜜蜂蜜蜂蜜蜂BS蜜蜂蜜蜂BES BES蜜蜂蜜蜂蜜蜂。蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂

+0

幹得好,先生! – 2014-10-12 03:01:46

相關問題