Javascript 在字符串中相对于给定位置的左侧查找第一个出现的空白

Javascript 在字符串中相对于给定位置的左侧查找第一个出现的空白,javascript,optimization,Javascript,Optimization,我有一个字符串文本,比如说Lorem Ipsum之类的东西。 我想匹配左侧相对于给定位置的第一个空格 示例:Lorem ipsum door sit amet…,索引:10 索引10中留下的第一个空白是Lorem和ipsum之间的空白 这背后的故事是:我想以特定的长度打断文本(svg-无自动打断)。因此,我只测量整个文本长度(速度问题),并估计哪一个位置可以放在一行中。因为我想在单词边界处拆分,所以我需要找到最左边的空格 有没有关于regex的线索可以做这样的事情 //编辑:单词边界不仅可以是一

我有一个字符串文本,比如说Lorem Ipsum之类的东西。 我想匹配左侧相对于给定位置的第一个空格

示例:
Lorem ipsum door sit amet…
索引:10

索引10中留下的第一个空白是
Lorem
ipsum
之间的空白

这背后的故事是:我想以特定的长度打断文本(svg-无自动打断)。因此,我只测量整个文本长度(速度问题),并估计哪一个位置可以放在一行中。因为我想在单词边界处拆分,所以我需要找到最左边的空格

有没有关于regex的线索可以做这样的事情


//编辑:单词边界不仅可以是一个空格,还可以是一个选项卡或其他(
\s

您可以这样做

//your parameters are here
var originalString = "a really long string to abbreviate";
var maxLength = 15;

//the actual logic that uses your parameters
var str = originalString.substring(0, maxLength);
var lastIndex = str.lastIndexOf(" ");
str = str.substring(0, lastIndex);
针对您的新问题更新了答案:

//your parameters are here
var originalString = "a really long string to abbreviate";
var maxLength = 15;

//the actual logic that uses your parameters
var str = originalString.substring(0, maxLength);
str = str.replace(/\s+\S*$/, "")
console.log(str);

该正则表达式应归功于@user187291。给他/她一票

str.lastIndexOf(“,10)
?哇-那很简单。我不知道lastIndexOf的第二个参数。如果我想捕捉每一个
\s
而不是只捕捉空格,我该怎么办?使用regexp很复杂,但在使用indexOf之前,您可以用普通空格替换左侧,而且它应该比regexp执行得更快。
“一个人计划一条运河”。搜索(/\s\w*$/)
(之前切片)@丹达维斯,你能解释一下那里发生了什么吗DI编辑了我的问题以明确说明,我需要匹配正则表达式中所有与
\s
匹配的空格。您的正则表达式匹配最后一个空格非常好。有没有办法一个接一个地匹配所有其他连续的空格?所以第一个,最后一个,第二个,前一个,等等…我不太明白这个问题,但我肯定有。不过,这不是我想的。我在这篇文章中回答了两个不同的问题。我觉得你要我击中一个移动的目标!如果我试图回答的问题不断变化,我不确定如何让我的答案被接受:-/我没有改变,但扩展了^^。无论如何,你的答案是正确的。只是再等一会儿。我问过,以防你知道,但我找到了解决办法。非常感谢。