2
    "[17235_A, 17235_B, -1.0, 0.06838527, 1.0]"   
    "[17235_C, 17235_D, -1.0, 0.06838527, 1.0]"
    "[17235_E, 17235_F, -1.0, 0.06838527, 1.0]"

私は上記のようにたくさんの文字列を持っています、私は最初の行から、そして同様に2番目と3番目の行から他の数字17235_Aを抽出したいと思います。17235_B行ごとに数字が変わるのがわかると思いますが、部分文字列コードが一般的であれば素晴らしいと思います。あなたの提案は私に大いに役立ちます。

4

3 に答える 3

1
String[] result = string.split("," ,2);

result[0] と result[1] は、必要な 2 つの部分文字列になります。

于 2013-03-14T13:48:21.127 に答える
1

少しの正規表現がこれを行います:

public static void main(String[] args) {
    final String[] myStrings = new String[] {"[17235_A, 17235_B, -1.0, 0.06838527, 1.0]", "[17235_C, 17235_D, -1.0, 0.06838527, 1.0]", "[17235_E, 17235_F, -1.0, 0.06838527, 1.0]"};
    final Pattern pattern = Pattern.compile("^\\[([^,]++),\\s*+([^,]++).*+$");
    for(final String string : myStrings) {
        final Matcher matcher = pattern.matcher(string);
        if(matcher.matches()) {
            System.out.println(matcher.group(1));
            System.out.println(matcher.group(2));
            System.out.println("Done");
        }
    }        
}

出力:

17235_A
17235_B
Done
17235_C
17235_D
Done
17235_E
17235_F
Done

正規表現の説明:

  • は文字列の^先頭に一致します
  • \\[、先頭の "[" に一致します (ダブル esacped)
  • ([^,]++)、最初のカンマまでのコンテンツと一致する可能性があります。これは、必要以上に最適化されています。
  • thenは,\\s*+、任意の量の空白が続くコンマに一致します (これも可能性があります)。
  • ([^,]++)、次のコンマまでの内容に一致します
  • .*$、行末までの内容に一致します (これも可能性があります)。

2 つの一致グループに、必要な が含まれるようになりましたString

これは、可能な限り所有一致を使用する理由についての非常に優れた記事です。

于 2013-03-14T13:51:11.867 に答える
0
public static void main(String[] args) {
        String str = "[17235_A, 17235_B, -1.0, 0.06838527, 1.0]";

        String[] strArray = str.split(", ");

        System.out.println(strArray[0].substring(1)); //first number
        System.out.println(strArray[1]); //second number
    }
于 2013-03-14T13:48:46.550 に答える