我试图在Scala中从字符串中删除重复的单词。
我编写了一个UDF(以下是代码),用于从字符串中删除重复的单词:
val de_duplicate: UserDefinedFunction = udf ((value: String) => {
if(value == "" | value == null){""}
else {value.split("\\s+").distinct.mkString(" ")}
})
这个问题是它也从字符串中删除单个字符记号。
例如,如果字符串为:
"test abc abc 123 foo bar f f f"
我得到的输出是:
"test abc 123 foo bar f"
我想要做的是仅删除重复的单词而不是单个字符, 我可以想到的一个解决方法是将字符串中单个字符标记之间的空格替换掉,这样示例输入字符串将变为:
"test abc abc 123 foo bar fff"
这将解决我的问题,我无法找出正确的正则表达式模式,但我相信这可以使用捕获组或前瞻来完成。我查看了其他语言类似问题的相关问题,但无法在Scala中找出正则表达式模式。
如果有任何帮助,将不胜感激!
(?<=^|\b\w) +(?=\w\b|$)
,它还处理了单词之间存在多个空格的情况。 - Pushpesh Kumar Rajwanshi