diff options
author | michelou <michelou@epfl.ch> | 2008-01-30 15:23:01 +0000 |
---|---|---|
committer | michelou <michelou@epfl.ch> | 2008-01-30 15:23:01 +0000 |
commit | 1dda54121ee66cb5251cfa3145e167529a9301de (patch) | |
tree | 098aa78bb0dc7c95b98204895b0aa3c1c1fe8263 | |
parent | 1bb3f81b2e10dec7b949aea0dcb6d58726f4f4f0 (diff) | |
download | scala-1dda54121ee66cb5251cfa3145e167529a9301de.tar.gz scala-1dda54121ee66cb5251cfa3145e167529a9301de.tar.bz2 scala-1dda54121ee66cb5251cfa3145e167529a9301de.zip |
fixed (hopefully) regexp pattern (Java 1.4 vs 1...
fixed (hopefully) regexp pattern (Java 1.4 vs 1.5+)
-rw-r--r-- | src/library/scala/runtime/RichString.scala | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/library/scala/runtime/RichString.scala b/src/library/scala/runtime/RichString.scala index e2c5d1f0c6..23db1a3fa7 100644 --- a/src/library/scala/runtime/RichString.scala +++ b/src/library/scala/runtime/RichString.scala @@ -164,12 +164,18 @@ final class RichString(val self: String) extends Proxy with RandomAccessSeq[Char */ def stripMargin: String = stripMargin('|') + // NB. "\\Q" + '\\' + "\\E" works on Java 1.5 and newer, but not on Java 1.4 + private def escape(ch: Char): String = ch match { + case '\\' => "\\\\" + case _ => "\\Q"+ch+"\\E" + } + @throws(classOf[java.util.regex.PatternSyntaxException]) - def split(separator: Char): Array[String] = self.split("\\Q"+separator+"\\E") + def split(separator: Char): Array[String] = self.split(escape(separator)) @throws(classOf[java.util.regex.PatternSyntaxException]) def split(separators: Array[Char]): Array[String] = { - val re = separators.foldLeft("[")(_+"\\Q"+_+"\\E") + "]" + val re = separators.foldLeft("[")(_+escape(_)) + "]" self.split(re) } |