我试图从Scala中的字符串中删除重复的单词。
我写了一个udf(下面的代码)从字符串中删除重复的单词:
val de_duplicate: UserDefinedFunction = udf ((value: String) => {
if(value == "" | value == null){""}
else {value.split("\\s+").distinct.mkString(" ")}
})
Run Code Online (Sandbox Code Playgroud)
我面临的问题是它也从字符串中删除了单个字符标记,
例如,如果字符串是:
"test abc abc 123 foo bar f f f"
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
"test abc 123 foo bar f"
Run Code Online (Sandbox Code Playgroud)
我要做的是仅删除重复的单词,而不删除单个字符。我可以想到的一种解决方法是替换字符串中任何单个字符标记之间的空格,以使示例输入字符串变为:
"test abc abc 123 foo bar fff"
Run Code Online (Sandbox Code Playgroud)
这可以解决我的问题,我无法找出正确的正则表达式模式,但我相信可以使用捕获组或提前完成。我在其他语言中也看过类似的问题,但无法弄清楚scala中的正则表达式模式。
任何帮助,将不胜感激!