The most straightforward way is using a regex extractor. These are quite fast, actually, for simple stuff like this--as fast as your solution. Is it prettier? I don't know.
val p = """Point\((\d+)\s(\d+)\)""".r
"Point(123 456)" match { case p(a,b) => (a,b) }
On my machine, extracting 10,000 such pairs takes 3.90 ms using this method, and 4.35 ms using yours (mostly due to the extra slowness of split).
If you need it to be faster yet for some odd reason,
def uuple2(s: String) = {
if (!s.startsWith("Point(") || s(s.length-1) != ')') throw new Exception
val i = s.indexOf(' ',6)
if (i < 0 || i+2 >= s.length) throw new Exception
(s.substring(6,i), s.substring(i+1,s.length-1))
}
This is way faster: 0.38 ms for 10k on my machine.