如何用另一个单词替换正文中的每个单词?

时间:2014-10-12 01:17:32

标签: javascript regex actionscript-3 actionscript

如何用其他单词替换每个单词并保留格式,如换行符,制表符,空白字符等?

我认为解决方案可能是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(" ");

}

这是输入:

  

“快速的棕色狐狸跳过懒狗”是一种英语   pangram - 包含字母表中所有字母的短语。它   用于显示字体和测试打字机和计算机键盘,   以及涉及英文所有字母的其他申请   字母。由于其简洁和连贯性,它已经变得广泛   已知的。

     

在计算机时代,这种pangram常用于显示字体   样品和测试计算机键盘。 Microsoft Word有一个   命令自动键入句子,在Office 2003之前的版本中,   使用命令= rand(),并在Office 2007及更高版本中使用   command = rand.old()。

这是输出。如果我输入令牌,“蜜蜂”的结果是:

  蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂   蜜蜂b蜜蜂蜜蜂bes bs bes bes bs bes bees bees bs bs bes bs   蜜蜂蜜蜂bes bs蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂bes bes bs蜜蜂蜜蜂蜜蜂   bes bs bes bees bs bes bees bees bees bees bees bes bes bes bes bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees   bes bes bees bees bees bees bees bes bes bes bs bees bees bees bees bees bs   蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂   b bees bs bees bees bes bees bees bes bs bes bs bes bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees   bes bees bees bees be be be be be be be be be be be be be be be be be be be be be be be be be be be be be be   蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂蜜蜂

请注意缺少格式和标点符号。实际上,一切都不是一句话。我想保留所有内容,但用“蜜蜂”或我选择的其他单词替换每个单词。

更新
实际上,我可以做一些像使用RegEx替换运行函数吗?那么content.replace(/ ^ \ W / g,myFunction)?

或者我可以找到所有单词并用单词的长度替换它们吗?所以,“快速的棕色狐狸跳......”变成了“3 5 5 3 4 ......”。然后我可以用我的单词替换数字?

1 个答案:

答案 0 :(得分: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);

得到以下输出:

&#34; bes bees bees bees bees bees bes bees bes&#34; bs bes bees-bees bees-b bees bees bees bes bs bes bees bs bes bees。 bs bs bes bs bees bees bes bs bees bees bes bees bees bees bes bs bees bees bees bes bes bs bes bes bs bes bees bees bees bes bees bes bees bes bees bees bees蜜蜂是蜜蜂蜜蜂蜜蜂,蜜蜂蜜蜂蜜蜂。

bs bes bes bs bees,bees bees bs bees bees bes bes bees bees bees bes bes bees bees bees bees bees bees bees bees bees bees bees bees bees蜜蜂蜜蜂bes bs蜜蜂bs蜜蜂bes bees bes bes bes bes bees bees bees bes bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees bees