summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2007-06-13 17:22:51 +0000
committermichelou <michelou@epfl.ch>2007-06-13 17:22:51 +0000
commit52759489db5d74728bf63f0409a9d863daf3284b (patch)
treef736a179cc955973f4d3ba948a84a72b011d1e1f /src
parent1e6f4c280df5c05827fdd585701be17be90d0447 (diff)
downloadscala-52759489db5d74728bf63f0409a9d863daf3284b.tar.gz
scala-52759489db5d74728bf63f0409a9d863daf3284b.tar.bz2
scala-52759489db5d74728bf63f0409a9d863daf3284b.zip
fixed split method on JVM
Diffstat (limited to 'src')
-rw-r--r--src/dotnet-library/scala/runtime/RichString.scala2
-rw-r--r--src/library/scala/runtime/RichString.scala18
2 files changed, 17 insertions, 3 deletions
diff --git a/src/dotnet-library/scala/runtime/RichString.scala b/src/dotnet-library/scala/runtime/RichString.scala
index 1b087d7ff9..19085eee88 100644
--- a/src/dotnet-library/scala/runtime/RichString.scala
+++ b/src/dotnet-library/scala/runtime/RichString.scala
@@ -135,6 +135,8 @@ final class RichString(val self: String) extends Seq[Char] with Ordered[String]
def split(separator: Char): Array[String] = self.Split(Array(separator))
+ def split(separators: Array[Char]): Array[String] = self.Split(separators)
+
def toByte: Byte = System.Byte.Parse(self)
def toShort: Short = System.Int16.Parse(self)
def toInt: Int = System.Int32.Parse(self)
diff --git a/src/library/scala/runtime/RichString.scala b/src/library/scala/runtime/RichString.scala
index 241d96f303..c8f5160351 100644
--- a/src/library/scala/runtime/RichString.scala
+++ b/src/library/scala/runtime/RichString.scala
@@ -112,10 +112,10 @@ final class RichString(val self: String) extends Seq[Char] with Ordered[String]
* </blockquote>
*/
def stripMargin(marginChar: Char): String = {
- val buf = new scala.compat.StringBuilder()
+ val buf = new StringBuilder()
for (line <- linesWithSeparators) {
val len = line.length
- var index = 0;
+ var index = 0
while (index < len && line.charAt(index) <= ' ') index += 1
buf append
(if (index < len && line.charAt(index) == marginChar) line.substring(index + 1) else line)
@@ -133,7 +133,19 @@ final class RichString(val self: String) extends Seq[Char] with Ordered[String]
*/
def stripMargin: String = stripMargin('|')
- def split(separator: Char): Array[String] = self.split(separator.toString())
+ private def escape(ch: Char): String = ch match {
+ case '.' | '$' | '^' | '\\' => "\\" + ch
+ case _ => "" + ch
+ }
+
+ @throws(classOf[java.util.regex.PatternSyntaxException])
+ 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("[")(_+_) + "]"
+ self.split(re)
+ }
def toByte: Byte = java.lang.Byte.parseByte(self)
def toShort: Short = java.lang.Short.parseShort(self)