自动将句点之后开始的每个句子大写

问题描述 投票:0回答:1

我试图做到这一点,以便当用户在输入字段中输入文本时,他们的句子将自动大写。有些人在正确的语法和标点符号方面已经够糟糕的了,所以这将有助于让我在审阅表单条目时变得稍微容易一些。

在此示例中,用户点击空格后每个单词都会大写,这不是我想要的。

提前感谢大家的帮助和意见。

<html lang="us">
<textarea id="input" onkeyup="onChange()" placeholder=
"Write something..."></textarea>
</html>

<style>
textarea#input {
width: 100%;
border: 2px solid black;
}
</style>

<script>
console.log('example:')
console.log(
"j. delan pegot".replace(/\b/g, l => l.toUpperCase()).replace('. ', '. ')
);

const stringCapitalize = (str) => {
return str.replace(/\b\w/g, l => l.toUpperCase()).replace('. ', '. ')
}

const onChange = (evt) => {
const input = document.getElementById("input");
input.value = stringCapitalize(input.value);
}
</script>
javascript grammar punctuation
1个回答
0
投票

您可以使用正则表达式实现基于句子的大写,这是为了匹配句号和空格之后的句子的第一个字母。

在您的

stringCapitalize
函数中,我使用正则表达式来
/(\. \w)|^w/
这是为了匹配句号和空格后每个句子的第一个字母。

<!DOCTYPE html>
<html lang="us">
<head>
    <style>
        textarea#input {
            width: 100%;
            border: 2px solid black;
        }
    </style>
</head>
<body>
    <textarea id="input" onkeyup="onChange()" placeholder="your place holder..."></textarea>
    <script>
        const stringCapitalize = (str) => {
            return str.replace(/(^\w)|(\. \w)/g, match => match.toUpperCase());
        }

        const onChange = (evt) => {
            const input = document.getElementById("input");
            input.value = stringCapitalize(input.value);
        }
    </script>
</body>
</html>

现在将把每个句子的第一个字母大写,而不是每个单词大写。

© www.soinside.com 2019 - 2024. All rights reserved.