代码之家  ›  专栏  ›  技术社区  ›  user3243499

如何在Scala中有效地从字符串中删除非单词字符?

  •  -2
  • user3243499  · 技术社区  · 7 年前

    我有一个字符串如下:

    我想通过从字符串中删除非单词字符来清除此字符串,如 ".", "@", numbers, ...

    如何在Scala中实现?Scala中是否有一个内置函数,我只给出一个不需要的字符列表,它会自动过滤字符串?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Tim    7 年前

    [感谢迪玛指出这一点 * replaceAll ]

    简单的解决办法是

     str.replaceAll("\\W", "")
    

    这将用另一个字符串替换所有出现的正则表达式。单词字符的正则表达式是 \w 非文字字符是 \W ,因此这将用零替换所有非单词字符。

    如果你想要一个更复杂的测试,那么看看正则表达式的介绍,看看如何做到这一点。

    编辑

    如果使用重音字符或其他字母表中的字符,请使用Unicode表达式。例如,要保留所有Unicode字母字符,请使用以下命令:

     str.replaceAll("\\P{L}", "")
    

    例如,这将避免丢失crche中的第一个e。

        2
  •  0
  •   Yevhenii Popadiuk    7 年前

    "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"
    

    如果你的逻辑比我想象的更复杂,那就使用正则表达式。

    推荐文章