summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library/scala/CharSequence.scala17
-rw-r--r--src/library/scala/runtime/RichString.scala6
2 files changed, 23 insertions, 0 deletions
diff --git a/src/library/scala/CharSequence.scala b/src/library/scala/CharSequence.scala
index da776256a6..651650471c 100644
--- a/src/library/scala/CharSequence.scala
+++ b/src/library/scala/CharSequence.scala
@@ -114,6 +114,17 @@ trait CharSequence extends java.lang.CharSequence with Seq[Char] {
* @return The resulting string
*/
def replaceFirst(regex: Regex, replacement: String): String = regex replaceFirstIn (this, replacement)
+
+ def toArray: Array[Char] = {
+ val len = length
+ val result = new Array[Char](len)
+ var i = 0
+ while (i < len) {
+ result(i) = charAt(i)
+ i += 1
+ }
+ result
+ }
}
/** The CharSequence object defines variance implementations of character sequences
@@ -150,6 +161,12 @@ object CharSequence {
def subSequence(_start: Int, _end: Int) =
new AsArray(source, start + _start, start + _end)
+ override def toArray: Array[Char] = {
+ val result = new Array[Char](length)
+ compat.Platform.arraycopy(source, start, result, 0, length)
+ result
+ }
+
override def toString = new String(source, start, end - start)
}
}
diff --git a/src/library/scala/runtime/RichString.scala b/src/library/scala/runtime/RichString.scala
index 9c7facd1a7..192cf62ebb 100644
--- a/src/library/scala/runtime/RichString.scala
+++ b/src/library/scala/runtime/RichString.scala
@@ -219,6 +219,12 @@ final class RichString(val self: String) extends Proxy with CharSequence with Ra
def toLong: Long = java.lang.Long.parseLong(self)
def toFloat: Float = java.lang.Float.parseFloat(self)
def toDouble: Double = java.lang.Double.parseDouble(self)
+
+ override def toArray: Array[Char] = {
+ val result = new Array[Char](length)
+ self.getChars(0, length, result, 0)
+ result
+ }
}
object RichString {