我已经阅读了这篇文章中的解决方案。如何在javascript中的某个字符后面的空格处拆分字符串?
它在一定程度上起作用。但我正在努力实现的目标略有不同。
我有一个限制为40个字符的用户输入。我正在接受输入并将其显示在屏幕上。但是,我需要将输入拆分为大约20个字符,然后将剩余部分插入下一行。并且它最多只能在两条线上进行
更新::我还应该在这里提到,除了在前端显示文本外,我们还需要将字符串传递到后端。但是,我们需要插入n
,而不是用<br/>
来发送它,以便在后端系统中强制使用新行。
最终,每行不能超过20个字符。然而,它需要是动态的,这样,如果用户输入的字符串是30个字符,但空格在第20个字符之前,我如何调整它,使其在第20字符之前的空格处拆分?-我希望这是有道理的。
例如
TEXT12345 STRING46789
应该像这个一样出现
TEXT12345
字符串46789
但是,还有以下
文本字符串EF
这里的新线
每行最多需要20个字符,并且我不能强制使用连字符。
下面的代码是我所做的,但它不太好用,因为我经常在空格前得到"undefined"。此外,它不会动态地寻找20个字符限制之前的空间
Child1Name.keyup(function(e) {
var stringValue = Child1Name.val();
if (stringValue.length > 19) {
let [firstLine, secondLine] = stringValue.replace(/.{20}S*s+/g, "$&@").split(/s+@/)
previewChild1Name.html(firstLine + "<br/>" + secondLine);
}else{
previewChild1Name.text(stringValue);
}
});
如有任何帮助,我们将不胜感激。
您可以编写如下函数。首先用空格分割字符串,然后在其上循环以附加单词。如果在追加一个新单词后超过了长度,则将现有单词添加到arr并清除当前字符串。
请尝试下面的代码。
function getSplittedString(s, length) {
let arr = [];
let str = '';
s.split(' ').forEach(x => {
if (str !== '' && (str + ' ' + x).length > length) {
arr.push(str);
str = '';
}
str = (str + ' ' + x).trim();
});
if (str !== '') {
arr.push(str);
}
return arr.join('<br/>')
}
console.log(getSplittedString('TEXT12345 STRING46789', 20));
从我在这个网站上看到的和发现的:mdn网站
您可以像这样在字符串值(应该是整个字符串(上使用split(对字符串(;
var stringvalue = 'TEXT12345 STRING46789';
var words = str.split(' '); // what charater need to cut the string
console.log(words[0]);
// expected output: "TEXT12345"
很抱歉急于回答,有点忙。希望这能有所帮助。