【问题标题】:Custom capitalize a string using a regex使用正则表达式自定义大写字符串
【发布时间】:2016-09-03 02:06:15
【问题描述】:

假设我的 textarea 有这个字符串:

读者会分心,这是一个早已确立的事实。由 查看其布局时页面的可读内容。 使用 Lorem Ipsum 是它具有或多或少的正态分布 字母,而不是使用。

我想在用户输入文本区域时自定义大写此字符串。

  • 第一个字符大写
  • 其他字符小写
  • 点后字符大写
  • 强制在点和逗号后添加空格字符

输出字符串应该是这样的:

©t 是一个由来已久的事实,即读者会分心。 B你 查看其布局时页面的可读内容。 T他的观点 使用 lorem Ipsum 是它具有或多或少的正态分布 字母,而不是使用。

我怎样才能做到这一点以及使用什么样的regular expression

【问题讨论】:

  • 如何识别“Lorem”应该变成小写?句号后面的单词应该大写。但是 Lorem 不应该遵循的标准是什么?除非您可以定义规则,否则您将无法让代码执行您自己不知道的操作
  • 我已经写好了标准。第一个字符是大写。并且小写除点字符之后的所有其他字符。
  • 在您的格式化示例中,您没有以粗体单出要大写的字母,只有 ?有点混乱。
  • @Veverke 是的,第一次聊天将是大写字母,其他字符将是小写字母。除了点第一个字符之后。

标签: jquery regex uppercase capitalize


【解决方案1】:

我不确定这是您想要的解决方案,但首先,您可以使用:

var text = 'it is a long established fact that a reader will be distracted. by the readable content of a page when looking at its layout.the point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters,as opposed to using.';
var r = /\.\s?/;
var sentences = text.split(r);
var desiredResult = new Array();

for (var i = 0; i < sentences.length; i++) {
    if (sentences[i].length > 0) {
        var fixedSentence = sentences[i][0].toUpperCase() + sentences[i].substr(1).toLowerCase();
        if (i > 0 && sentences[i][0] != ' ')  {
            fixedSentence = ' ' + fixedSentence;
        }

        desiredResult.push(fixedSentence);
        console.log(fixedSentence);
    }
}

【讨论】:

  • 我该怎么做;如果没有空格,则在点和逗号后添加空格
猜你喜欢
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 2020-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多