-1

貴重な時間をありがとう。文字列を分解して、Kr の前の数字だけをフェッチする必要があります。(ジャワで)

String str = "Delhi 205 Kr."

上記から、部分文字列として 205 だけが必要です。

もう1つの問題は、その文字列に別の数字が含まれていると仮定すると、スペースKrの前に数字だけが必要になることです。

String str = "India112Delhi 98 Kr."

ここでも、112 ではなく 98、または両方の組み合わせが必要です。

そして、このような文字列がある場合、値 25 のみを取得する方法は?

文字列 str = "New Delhi113 25 Kr."

事前に感謝します

4

7 に答える 7

1

次の正規表現をパターンとして使用します。

(\d+) (K|k)(R|r)\.

から最初のグループの値を取得しますMatcher

Pattern pattern = Pattern.compile("(\d+) (K|k)(R|r)\.");
Matcher matcher = pattern.matcher("India112Delhi 98 Kr.");

if (matcher.find()) {
    System.out.println(matcher.group(1));
}
于 2013-05-02T07:52:01.417 に答える
0

私の選んだ Java フレームワークであるGuavaを使用するいくつかのコード:)

String str = "..."; // input string

int indexOf = str.indexOf("Kr"); // get the index of Kr
String previous = str.substring(0, indexOf); // only get string before kr

// Split string on all non-digits and throw away any empty splits. 
// This leaves you with only numbers
Iterable<String> numbers = Splitters.onPattern("\\D").omitEmptyStrings();
// Get the last of the numbers since this one is next to the Kr.
Long output = Long.parseLong(Iterables.getLast(numbers));
于 2013-05-02T07:57:19.720 に答える
0

本当の正しい答えがここにある以外のすべての人に感謝します。後ろからループする必要があります

                    String cost= "Nay String   205 Kr.";
                    String[] values = cost.split(" ");
                    Long value=(long) 0;
                    for(int i=values.length; i>0; i--)
                    {
                            try {
                                value = Long.parseLong(values[i]);
                    break;
                            }
                        catch(Exception e)
                        {}
                    }
于 2013-05-02T08:26:58.863 に答える
0

これはうまくいきますか?
String str = "India112Delhi 98 Kr.";

String [] strarray = str.split(" ");

System.out.println(Long.parseLong(strarray[strarray.length-2]));

于 2013-05-02T09:15:25.267 に答える