我有一个 textarea 接收全大写的输入,这对大多数用户来说都很好。一些用户需要以标准化方式表示的文本 - 每个句子的第一个字母大写,其余小写。
我试图从其他 SO 线程中调整一些建议,但是缺少一些东西。请帮忙!
身体
<form>
<input value="Select all" onclick="javascript:this.form.finaltext.focus();this.form.finaltext.select();" type="button">
<input value="Clear All" onclick="this.form.finaltext.value=''" type="button">
<input value="Normalize text" type="button" id="normalize">
<a href="#" id="copy-textarea"><input type=button value="Copy to Clipboard"></a><br>
<br>
<textarea id="finaltext" cols="80" rows="50"> </textarea>
</form>
脚本
$(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);
});
});
更新 1现在脚本可以工作了。
新问题在以下情况下,如何操作 .replace 括号中的逻辑:
我要允许“规范化”的文本区域采用以下格式:
- 文本1
- 文本2
- 文本3
带有破折号、空格和全部大写的文本。.replace 逻辑似乎只查找字符串中的第一个字符,但我希望它单独处理每一行(以破折号开头),然后只留下第一个字母大写。