我有一个字符串如下:
你好。我的邮政编码是9876543。另外,我的电子邮件ID是 myname@domain.com。
我想通过从字符串中删除非单词字符来清理此字符串,例如".", "@", numbers, ...
如何在Scala中实现它?在Scala中有一个内置的函数,我只列出不需要的字符,它将自动过滤字符串?
谢谢。
答案 0 :(得分:1)
[感谢Dima指出使用*
时不需要replaceAll
]
简单的解决方法是
str.replaceAll("\\W", "")
这会将所有出现的正则表达式替换为另一个字符串。单词字符的正则表达式为\w
,非单词字符的正则表达式为\W
,因此这将全部替换所有非单词字符。
如果您要进行更复杂的测试,请查看正则表达式的任何介绍,以了解如何执行此操作。
如果使用带重音符号的字符或其他字母的字符,请使用Unicode表达式。例如,要保留所有Unicode字母字符,请使用以下命令:
str.replaceAll("\\P{L}", "")
例如,这将避免丢失托儿所的第一个e。
答案 1 :(得分:0)
假设您要保留字母和空格并过滤其他所有内容,在Scala中,您可以像这样简单:
"Hi there. My zip code is 9876543. Also my email-Id is myname@domain.com."
.filter(c => c.isLetter || c.isWhitespace)
// > res: String = "Hi there My zip code is Also my emailId is mynamedomaincom"
如果您的逻辑比我想象的还要复杂,请使用正则表达式。