2

この文字列を分割したい

String info = "0.542008835 meters height from ground";

これから、このように小数点以下2桁だけを取得したいと思います 0.54

これを使って私はそれを手に入れています

String[] _new = rhs.split("(?<=\\G....)");

しかし、文字列にこの文字列のような小数が含まれていない場合、私はここで問題に直面しています

String info = "1 meters height from ground";

この文字列では、のような分割文字列の最初の4文字までの文字を取得しています1 me。小数がある場合は数値のみを分割したいのですが、この問題を解決する方法。

4

5 に答える 5

7
if(info.contains("."))
{
       String[] _new = rhs.split("(?<=\\G....)");
}
于 2013-02-01T11:11:15.537 に答える
3

最初の値の後の空白で確認できると思います。これを参照してください スペースを取得した場合、最初の文字のみを取得します。

文字列に空白が含まれているかどうかを確認するには、Matcher を使用してその find メソッドを呼び出します。

Pattern pattern = Pattern.compile("\\s");
Matcher matcher = pattern.matcher(s);
boolean found = matcher.find();

空白のみで構成されているかどうかを確認したい場合は、String.matches を使用できます。

boolean isWhitespace = s.matches("^\\s*$");
于 2013-02-01T11:15:53.770 に答える
2

Deepzz の方法の代わりに、正規表現を使用してこれを行うことができます。これは、「.」がある場合を処理します。文字列の後半に、以下の例を含めました。実際に文字列の一部を残したいという質問からは明らかではありませんが、これをキャプチャするために正規表現に2番目のグループを追加できます。

public static void main(String[] args) {
    final String test1 = "1.23 foo";
    final String test2 = "1 foo";
    final String test3 = "1.234 foo";
    final String test4 = "1.234 fo.o";
    final String test5 = "1 fo.o";
    getStartingDecimal(test1);
    getStartingDecimal(test2);
    getStartingDecimal(test3);
    getStartingDecimal(test4);
    getStartingDecimal(test5);

}

private static void getStartingDecimal(final String s) {
    System.out.print(s + " : ");
    Pattern pattern = Pattern.compile("^(\\d+\\.\\d\\d)");
    Matcher matcher = pattern.matcher(s);
    if(matcher.find()) {
        System.out.println(matcher.group(1));
    } else {
        System.out.println("Doesn't start with decimal");
    }
}
于 2013-02-01T11:21:29.933 に答える
1

これは、数値の近くに文字列があり、int と double の数値もわかっている場合に機能します。

    String a ="0.542008835 meters height from ground";
    String b = a.replace(" meters height from ground", "");
    int c = (int) ((Double.parseDouble(b))*100);
    double d = ((double)c/100);
于 2013-02-01T11:24:26.310 に答える
1

数値が常に文字列の最初の部分であると仮定します。

String numStr = rhs.split(" ")[0];
Double num = Double.parseDouble(numStr);

その後、文字列フォーマッターを使用して、数値の目的の表現を取得できます。

于 2013-02-01T11:21:02.107 に答える