我可以使用数据工厂数据流将列文本拆分为数组吗?
Can I split a column text as array using data factory data flow?
在我的数据流管道中,我想添加一个派生列,它的数据类型是数组。我想用 1000 个字符拆分现有列而不打断单词。我想我们可以使用 regexSplit,
regexSplit(<string to split> : string, <regex expression> : string) => array
但我不知道可以使用哪个正则表达式来拆分现有列而不打断单词。
请帮我弄清楚。
我不会为此使用正则表达式,而是像这样的截断函数,courtesy of 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}…", input.Substring(0, (iNextSpace > 0) ? iNextSpace : length).Trim());
}
翻译成表达式函数它看起来*像这样。
substring(Input, 1, iif(locate(Input, ' ', 1000) > 0, locate(Input, ' ', 1000) , length(Input)) )
由于您没有 lastIndexOf
可用作表达式函数,因此您必须默认为 locate
,这意味着该表达式会在第一个 space 处截断字符串] 在第1000个字符之后。
*我没有可以测试它的环境。
我为此创建了一个解决方法,对我来说效果很好。
filter(split(regexReplace(regexReplace(text, `[\t\n\r]`, ``), `(.{1,1000})(?:\s|$)`, `~~`), '~~'), #item !="")
我想,我们有比这更好的解决方案。
在我的数据流管道中,我想添加一个派生列,它的数据类型是数组。我想用 1000 个字符拆分现有列而不打断单词。我想我们可以使用 regexSplit,
regexSplit(<string to split> : string, <regex expression> : string) => array
但我不知道可以使用哪个正则表达式来拆分现有列而不打断单词。 请帮我弄清楚。
我不会为此使用正则表达式,而是像这样的截断函数,courtesy of 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}…", input.Substring(0, (iNextSpace > 0) ? iNextSpace : length).Trim());
}
翻译成表达式函数它看起来*像这样。
substring(Input, 1, iif(locate(Input, ' ', 1000) > 0, locate(Input, ' ', 1000) , length(Input)) )
由于您没有 lastIndexOf
可用作表达式函数,因此您必须默认为 locate
,这意味着该表达式会在第一个 space 处截断字符串] 在第1000个字符之后。
*我没有可以测试它的环境。
我为此创建了一个解决方法,对我来说效果很好。
filter(split(regexReplace(regexReplace(text, `[\t\n\r]`, ``), `(.{1,1000})(?:\s|$)`, `~~`), '~~'), #item !="")
我想,我们有比这更好的解决方案。