gpt4 book ai didi

javascript - 向字符串中的每个空格添加一个空格,然后循环返回,直到满足长度

转载 作者:行者123 更新时间:2023-11-28 18:47:16 27 4
gpt4 key购买 nike

我有以下 while 循环作为我的文本对齐函数的一部分。我的想法是,我有文本字符串 (str),需要将其调整为等于给定长度 (len)

问题是我一次只能向现有空间添加一个空格,然后再迭代到字符串中的下一个空格并在那里添加另一个空格。如果字符串中的所有空格都是这样,但仍然没有达到所需的长度,我会循环回到原始空格(现在是两个空格)并添加另一个空格。然后它转到单词之间的下一个空格,依此类推。这个想法是,字符串中单词之间的任何空格不应有超过一个空格的差异(即 Lorem---ipsum--dolor--sit,而不是 Lorem--- -ipsum--dolor-sit)

根据我的研究,我决定在原始字符串中使用 substring 方法来添加第一个额外空格,然后我将增加索引并移动到字符串中的下一个空格并重复添加。这是我的代码:

var indexOf = str.indexOf(" ", 0);

if ( indexOf > -1 ) {
while ( indexOf > -1 && str.length < len ) {
//using a regexp to find a space before a character
var space = /\s(?=\b)/.exec(str);
str = str.substring(0, indexOf + 1) + " " + str.substring(indexOf + 1);
//go to next space in string
indexOf = str.indexOf(space, indexOf + 2);

if ( indexOf === -1 ) {
//loops back to beginning of string
indexOf = str.indexOf(space, 0);
}

}
}
finalResults.push(str);

这段代码在大多数情况下都有效,但我注意到在某些情况下间距周期不正确。例如,它生成以下字符串:sit----amet,--blandit当正确的迭代是坐---amet,---blandit

如果您能帮助此代码正确地遍历字符串中的每个空格(添加一个空格)一次,然后循环回到字符串的开头重新开始,直到达到所需的长度,我们将非常感激。

最佳答案

我认为一开始就计算所需的数字空间会更有效。

var s = "today is a friday";
var totalLength = 40;
var tokens = s.split(/\s+/);
var noSpaceLength = s.replace(/\s+/g,'').length;
var minSpace = Math.floor((totalLength - noSpaceLength)/(tokens.length-1));
var remainder = (totalLength - noSpaceLength) % (tokens.length-1);

var out = tokens[0];
for (var i = 1; i < tokens.length; i++) {
var spaces = (i <= remainder ? minSpace+1 : minSpace);
out += "-".repeat(spaces) + tokens[i];
}

$('#out').text(out);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="out"></div>

关于javascript - 向字符串中的每个空格添加一个空格,然后循环返回,直到满足长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35098011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com