繁体   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