3

在我的数据流管道中,我想添加一个派生列,它的数据类型是数组。我想用 1000 个字符拆分现有列而不破坏单词。我认为我们可以使用 regexSplit,

regexSplit(<string to split> : string, <regex expression> : string) => array

但我不知道我可以使用哪个正则表达式来拆分现有列而不破坏单词。请帮我弄清楚。

4

2 回答 2

1

我为此创建了一个解决方法,它对我来说很好。

filter(split(regexReplace(regexReplace(text, `[\t\n\r]`, ``), `(.{1,1000})(?:\s|$)`, `$1~~`), '~~'), #item !="")

我认为,我们有比这更好的解决方案。

于 2020-07-07T17:09:12.770 回答
0

我不会为此使用正则表达式,而是像这样的截断函数,由 TimS 提供

public static string TruncateAtWord(this string input, int length)
{
    if (input == null || input.Length < length)
        return input;
    int iNextSpace = input.LastIndexOf(" ", length, StringComparison.Ordinal);
    return string.Format("{0}…&quot;, input.Substring(0, (iNextSpace > 0) ? iNextSpace : length).Trim());
}

翻译成表达式函数它看起来像这样。

substring(Input, 1, iif(locate(Input, ' ', 1000) > 0, locate(Input, ' ', 1000) , length(Input)) )

由于您没有lastIndexOf可用的表达式函数,因此您必须默认为locate,这意味着此表达式会在第1000 个字符之后的第一个空格处截断字符串。

*我没有可以测试它的环境。

于 2020-07-06T02:33:03.007 回答