我试图做到这一点,以便当用户在输入字段中输入文本时,他们的句子将自动大写。有些人在正确的语法和标点符号方面已经够糟糕的了,所以这将有助于让我在审阅表单条目时变得稍微容易一些。
在此示例中,用户点击空格后每个单词都会大写,这不是我想要的。
提前感谢大家的帮助和意见。
<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>
您可以使用正则表达式实现基于句子的大写,这是为了匹配句号和空格之后的句子的第一个字母。
在您的
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>
现在将把每个句子的第一个字母大写,而不是每个单词大写。