2017-07-25 18 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")