【问题标题】:Replacing elements in a string besides the first Occurence In Scala替换字符串中除第一次出现之外的元素在Scala中
【发布时间】:2019-03-15 11:43:40
【问题描述】:

我对正则表达式相对较新,虽然我知道 Scala 有一种在第一次出现之前使用替换项目的方法,但我想知道是否有办法在 Scala 中第一次出现后删除字符串中的项目。

例如如果我有一个类似的字符串

"Hello. W.o.r.l.d"
我将如何删除所有关注 W.

这样它就类似于

"Hello. World"

谢谢。

【问题讨论】:

    标签: regex scala


    【解决方案1】:

    不需要花哨的正则表达式。只需split() 然后重新连接。

    val noDots = "Hello. W.o.r.l.d".split("\\.")
    val res = noDots.head + "." + noDots.tail.mkString  //res: String = Hello. World
    

    如果文本中只有一个.,这将正常工作,但如果没有.,则会在字符串末尾插入一个。

    【讨论】:

      【解决方案2】:

      这是一种混合使用Regex 模式匹配和replace 的方法:

      val s = "Hello. W.o.r.l.d"
      
      val pattern = """(.*?\.)(.*)""".r
      
      s match {
        case pattern(a, b) => a + b.replace(".", "")
        case others => others
      }
      // res1: String = Hello. World
      

      注意,如果字符串中没有.,则匹配case others

      【讨论】:

        【解决方案3】:

        您也可以尝试使用 indexOf 和子字符串组合

        scala> val x = "Hello. W.o.r.l.d"
        x: String = Hello. W.o.r.l.d
        
        scala> x.substring(0,x.indexOf(".")+1) + x.split("\\.").tail.mkString
        res21: String = Hello. World
        
        scala>
        

        【讨论】:

          猜你喜欢
          • 2018-10-30
          • 1970-01-01
          • 2011-06-05
          • 1970-01-01
          • 2016-12-19
          • 1970-01-01
          • 1970-01-01
          • 2011-08-25
          • 2016-11-02
          相关资源
          最近更新 更多