summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2008-01-30 15:23:01 +0000
committermichelou <michelou@epfl.ch>2008-01-30 15:23:01 +0000
commit1dda54121ee66cb5251cfa3145e167529a9301de (patch)
tree098aa78bb0dc7c95b98204895b0aa3c1c1fe8263
parent1bb3f81b2e10dec7b949aea0dcb6d58726f4f4f0 (diff)
downloadscala-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.scala10
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)
}