簡體   English   中英

如何在Google表格上每x個字符將一個短語分割成一行?

[英]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序列。

  1. 用單個空格替換所有換行符,回車符和空格
  2. 匹配以非空格字符開頭的字符串,再匹配最多49個其他字符,然后以空格或字符串結尾。
  3. 將捕獲組替換為捕獲組,然后是CHAR(10) (並刪除后面的空格)。

  4. 最后將有額外的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.

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