簡體   English   中英

根據字符數和空格數使用正則表達式拆分字符串

[英]Split a string with regex based on number of characters and spaces

我需要根據一些字符將一個字符串拆分成一個數組,而不是刪掉一個單詞。

我一直在用這個:

var charPerLine = 17;
var regex = new RegExp('^(.{'+charPerLine+'}\\S*\\s+', 'g');
var output = str.replace(regex, "$&@").split(/\s+@/);

這段代碼的問題是,有時我得到的字符串超過17個字符,如果空格接近最新字符。

例如,

var str = "I want you to do something else instead.";

分裂成:

var output = ["I want you to do something", "else instead."]

但是第一個字符串超過17個字符,我需要將它拆分為:

var output = ["I want you to do", "something else", "instead."]

它還必須使用標點符號和單/雙引號

有什么建議嗎?

(?=(\b.{1,17}\b))\1

您可以使用它並替換$1\\n參見演示。

https://regex101.com/r/ff7iZp/1

你可以在第一個正則表達式中添加一個單詞邊界斷言\\b ,這樣如果它當前位於一個新單詞的開頭,它就不會以\\S*前進:

 var str = "I want you to do something else instead"; var charPerLine = 15; var regex = new RegExp('.{'+charPerLine+'}(?:\\\\b|\\\\S*\\\\s+)', 'g'); var output = str.replace(regex, "$&@").split(/\\s*@\\s*/); console.log(output); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM