Trimming strings in Scala

前端 未结 5 1927
无人共我
无人共我 2020-12-25 10:19

How do I trim the starting and ending character of a string in Scala

For inputs such as \",hello\" or \"hello,\", I need the output as

5条回答
  •  隐瞒了意图╮
    2020-12-25 11:09

    Given you only want to trim off invalid characters from the prefix and the suffix of a given string (not scan through the entire string), here's a tiny trimPrefixSuffixChars function to quickly perform the desired effect:

    def trimPrefixSuffixChars(
        string: String
      , invalidCharsFunction: (Char) => Boolean = (c) => c == ' '
    ): String =
      if (string.nonEmpty)
        string
          .dropWhile(char => invalidCharsFunction(char))  //trim prefix
          .reverse
          .dropWhile(char => invalidCharsFunction(char)) //trim suffix
          .reverse
      else
        string
    

    This function provides a default for the invalidCharsFunction defining only the space (" ") character as invalid. Here's what the conversion would look like for the following input strings:

    trimPrefixSuffixChars(" Tx  ")     //returns "Tx"
    trimPrefixSuffixChars(" . Tx . ")  //returns ". Tx ."
    trimPrefixSuffixChars(" T x  ")    //returns "T x"
    trimPrefixSuffixChars(" . T x . ") //returns ". T x ."
    

    If you have you would prefer to specify your own invalidCharsFunction function, then pass it in the call like so:

    trimPrefixSuffixChars(",Tx. ", (c) => !c.isLetterOrDigit)     //returns "Tx"
    trimPrefixSuffixChars(" ! Tx # ", (c) => !c.isLetterOrDigit)  //returns "Tx"
    trimPrefixSuffixChars(",T x. ", (c) => !c.isLetterOrDigit)    //returns "T x"
    trimPrefixSuffixChars(" ! T x # ", (c) => !c.isLetterOrDigit) //returns "T x"
    

    This attempts to simplify a number of the example solutions provided in other answers.

提交回复
热议问题