首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >句子大写例外

句子大写例外
EN

Stack Overflow用户
提问于 2014-01-12 21:38:10
回答 2查看 196关注 0票数 0

我有这样一个脚本,它把每个句子的第一个字母大写起来:

代码语言:javascript
复制
String.prototype.capitalize = function() {
    return this.replace(/.+?[\.\?\!](\s|$)/g, function (txt) {
        return txt.charAt(0).toUpperCase() + txt.slice(1);
    });
};

我想添加一个例外:如果该字符前面有一个.?!字符,则该句子的第一个单词不应该大写。

在我的例子中,capitalization of string xy. is not correct.将是Capitalization of string xy. Is not correct.

我希望结果是:Capitalization of string xy. is not correct.

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-12 21:55:57

因为Javascript不支持后置查找,所以您可以更容易地完成编写的函数,然后任意地将错误大写的位纠正回小写。

工作实例:

代码语言:javascript
复制
String.prototype.capitalize = function(exception) {
    var result = this.replace(/.+?[\.\?\!](\s|$)/g, function (txt) {
        return txt.charAt(0).toUpperCase() + txt.slice(1);
    });
    var r = new RegExp(exception + "\\.\\s*\(\\w+\)", "i");
    return result.replace(r, function(re) { return(re.toLowerCase()) });
};

alert("capitalization of string xy. is not correct.".capitalize("xy"));

您可能会对其进行增强,以处理一系列异常,甚至可以使用正则表达式。

下面是一个有用的示例:http://jsfiddle.net/remus/4EZBb/

票数 2
EN

Stack Overflow用户

发布于 2014-01-12 22:03:59

你可以用这个:

代码语言:javascript
复制
String.prototype.capitalizeSentencesWithout = function(word) {
    return this.replace(/.+?[\.\?\!](?:\s|$)/g, function (txt, pos, orig) {
        if (orig.slice(pos-word.length-2, pos-2) == word)
            return txt;
        return txt.charAt(0).toUpperCase() + txt.slice(1);
    });
};

用法:

代码语言:javascript
复制
> "capitalization of string xy. is correct.".capitalizeSentencesWithout("xy")
"Capitalization of string xy. is correct."

您也可以通过让.+?表达式贪婪地使用xy单词来解决这个问题,但是这会变得更加复杂。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21080608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档