[英]How can I split a phrase into a new line every x characters on Google Sheets?
我正在翻譯一個游戲,該游戲的文本框每行最多支持50個字符。 是否可以使用公式將每50個字符或整個單詞(49、48、47等)分割整個句子?
我目前正在使用此公式。
=JOIN(CHAR(10),SPLIT(REGEXREPLACE(A1, "(.{50})", "/$1"),"/"))
此代碼的問題在於,它會精確地分割50個字符(一次),並且會在單詞的中間進行分割。
再次重申,我的目標是,如果第50個字符位於單詞的中間,則不要在第50個字符上拆分它,並且該規則也適用於其余各行,因為它僅適用於第一行。
請看一下這個測試用的Google工作表,以獲取我正在談論的示例。
如果無法在Google表格上執行此操作,則只要獲得有效的代碼,我也不介意使用Excel。
作為記錄,我確實在2天前在Google的產品論壇上提出了要求,但仍然沒有得到答案。
你很親密 我不是Sheets的專家,所以不確定這是否是最好的方法,但是Regex對於您想要的東西是錯誤的。
同樣,您需要確定您沒有使用短語本身中可能出現的分割字符。 但是,對替換字符使用CHAR(10)
允許您插入LF
而無需執行JOIN SPLIT
序列。
將捕獲組替換為捕獲組,然后是CHAR(10)
(並刪除后面的空格)。
最后將有額外的CHAR(10)
,可以將其剝離。
EDIT正則表達式由於Google RE與我習慣的行為有所不同而略有變化(可能與非回溯正則表達式的工作方式有關)。 該問題出現在您的示例中:
=regexreplace(REGEXREPLACE(REGEXREPLACE(A1 & " ","[\r\n\s]+"," "),"(\S.{0,49})\s","$1" & char(10)),"\n+\z","")
= REGEXEXTRACT(A1,"(?ism)^"&REPT("([\w\d'\(\),. ]{0,49}\s)", ROUNDUP(LEN(A1)/50,0))&"([\w\d'\(\),. ]{0,49})$")
經過各種表達方式的測試,可按預期工作。 請注意,僅允許使用這些字符[a-zA-Z0-9 _'(),.],這意味着-
以及其他未提及的字符將不起作用。 如果需要它們,請將它們添加到REPT表達式中並完成regexp公式。 否則,這將完美工作。
=REGEXREPLACE(A1, "(.{1,50})\b", "$1" & CHAR(10))
{50}
正好匹配50次,但是您需要的是50 或更小 。
\\b
是在字母數字字符和非字母數字字符之間匹配的單詞邊界。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.