2

Javaで文字列のランダムな位置から整数を効率的に読み取ることは可能ですか? たとえば、私は

String s = "(34";
if (s.charAt(0) == '(')
{
    // How to read a number from position = 1 to the end of the string?
    // Of course, I can do something like
    String s1 = s.substring(1);
    int val = Integer.parseInt(s1);
}

しかし、文字列の新しいインスタンスを動的に作成し、遅すぎてパフォーマンスが低下しているようです。

アップデート

正確に言うと、"(ddd" という形式の文字列の配列があります。ここで、d は数字です。したがって、数値は常に pos = 1 から始まることがわかっています。これらの数値を効率的に読み取るにはどうすればよいでしょうか?

4

4 に答える 4

1

更新前に回答:

私は正規表現の専門家ではありませんが、これ"\\d+"がお役に立てば幸いです。以下のメソッドをパターンで呼び出します: "\\d+".

public static int returnInt(String pattern,String inputString){
    Pattern intPattern = Pattern.compile(pattern);
    Matcher matcher = intPattern.matcher(inputString);
    matcher.find();
    String input = matcher.group();
    return Integer.parseInt(input);
}
于 2013-05-02T07:37:03.453 に答える
0

新しいものを割り当てたくない場合は、この他の SO 回答Stringのコードを使用できます。

int charArrayToInt(char[] data, int start, int end) throws NumberFormatException {
    int result = 0;
    for (int i = start; i < end; i++) {
        int digit = ((int)data[i] & 0xF);
        if ((digit < 0) || (digit > 9)) throw new NumberFormatException();
        result *= 10;
        result += digit;
    }
    return result;
}

あなたはそれを呼び出すことができますcharArrayToInt(s.toCharArray(), 1, s.length())

于 2013-05-02T08:03:03.260 に答える