String readNumber(String source,int ofs,String token,boolean adjacent){
  if (adjacent) {
    return readSubstring(source,ofs,ofs + token.length());
  }
  int len=source.length();
  for (int i=ofs; i < len; i++) {
    char ch=source.charAt(i);
    if (isNumeric(ch) == false) {
      if (i == 0) {
        return null;
      }
      return readSubstring(source,ofs,i);
    }
  }
  return readSubstring(source,ofs);
}

String readNumber ( String source , int ofs , String token , boolean adjacent ) { if ( adjacent ) { return readSubstring ( source , ofs , ofs + token . length ( ) ) ; } int len = source . length ( ) ; for ( int i = ofs ; i < len ; i ++ ) { char ch = source . charAt ( i ) ; if ( isNumeric ( ch ) == false ) { if ( i == 0 ) { return null ; } return readSubstring ( source , ofs , i ) ; } } return readSubstring ( source , ofs ) ; }
read the number . does not attempt to parse .
