我正在尝试调整一个脚本,将文本区域中的所有CAPS文本转换为小写(第一个单词大写)。我的部分问题已经解决here。
它有效,但是......我的textarea文本采用以下格式:破折号,空格,然后是TEXT。
- TEXT1
- TEXT2
- TEXT3
我所拥有的脚本和.replace逻辑不考虑“ - ”和空格,并且它不会单独考虑每一行。
这是脚本:
$(window).load(function(){
$('#normalize').click(function capitalizeSentences(){
var capText = $("#finaltext").val();
capText = capText.toLowerCase();
capText = capText.replace(/\.\n/g,". [-<br>-]. ");
capText = capText.replace(/\.\s\n/g,". [-<br>-]. ");
var wordSplit = '. ';
var wordArray = capText.split(wordSplit);
var numWords = wordArray.length;
for(x=0;x<numWords;x++) {
wordArray[x] = wordArray[x].replace(wordArray[x].charAt(0),wordArray[x].charAt(0).toUpperCase());
if(x==0) {
capText = wordArray[x]+". ";
}else if(x != numWords -1){
capText = capText+wordArray[x]+". ";
}else if(x == numWords -1){
capText = capText+wordArray[x];
}
}
capText = capText.replace(/\[-<br>-\]\.\s/g,"\n");
capText = capText.replace(/\si\s/g," I ");
$("#finaltext").val(capText);
});
});
我没有遵循.replace()部分中的语法或逻辑。是否有关于如何构造逻辑的入门读物,或者有人可以给我一个细分,以便我可以更精确地调整它?
答案 0 :(得分:0)
您在代码中看到的是literal format for regular expressions。在文字格式中,您将表达式括在斜杠(/
)中,并可选择在第二个斜杠后添加标记。
在您的特定代码示例中:
capText.replace(/\.\n/g,". [-<br>-]. ");
相当于
capText.replace(new RegExp("\.\n", "g"),". [-<br>-]. ");
答案 1 :(得分:0)
好的,在阅读了一些RegEx和一些试错之后,我(发现了)解决了我的问题。
我意识到我改编的剧本中的大部分内容都是无关紧要的垃圾。所以我退后一步,把问题简单地解决了。
首先,我决定以小写形式呈现所有文本:
var capText = $('#finaltext').val();
capText=capText.toLowerCase();
然后,我需要使用.replace来查找“破折号+空格+任何字母”的所有实例:
.replace(/- ./g,
这将在所有实例中找到破折号后面的一个字母,然后我与一个函数结合使其成为大写:
.replace(/- ./g, function(c){return c.toUpperCase();});
最终代码是:
$('#normalize').click(function capitalizeSentences() {
var capText = $('#finaltext').val();
capText=capText.toLowerCase();
capText2 = capText.replace(/- ./g,function(c){ return c.toUpperCase(); });
$("#finaltext").val(capText2);
});
请参阅此处 - http://jsfiddle.net/fDy6K/