2017-07-25 71 views
-9

我想写一个正则表达式,每160个字符后插入一个换行符,但如果第160个字符它在中间一个字的结尾,然后切断。红宝石 - 分割字符串后n个字符,但不要拆分,如果在中间的一个字

任何想法?

我已经尝试过这种方式,但它还没有工作。仍在尝试。

string.gsub(/(.{160})(?=.)/, '\n') 

这工作在Javascript中,只是不太知道如何得到它的回报率

工作
string.replace(/(.{1,160})(?:\n|$|)/g, "$1 \n") 
+2

分享您的尝试? – RSB

+0

正则表达式不能插入换行符。 – mudasobwa

+0

也许不是一个正则表达式,一个字符串运算符可能是什么?我是RoR的新手,来自PHP背景。 – user3882741

回答

0

你可以试试这个:

regexp = /(\b.{1,160}[\S]*)\s/ 
res = text.scan(regexp).flatten.join("\n") 
+0

空间有一个小问题。为了方便起见,假定行长度是8而不是160,而'text =“aaa aaa aaa”'。第八个字符,第二个空格不在字的中间,所以字符串应该在第8个空格之后被打破,但是你的代码返回'“aaa aaa”'。顺便提一句,请注意''\ S *'与'\ S *'相同。 –

1

你可以试试这个

string.gsub(/(.{160}\S*)\s*/, "\\1\n")