0

Mfr Part#: MBRB1045G Technologie ...私は常にまたはのように構築された文字列を持っているMfr Part#: MBRB1545CTT4G Mountingので、常に抽出したい文字列があり、その後にいずれかMfr Part#:または他の文字が続きます。partnumberTechnologieMounting

これからどのようにその部品番号を抽出しますMBRB1045Gか?

4

4 に答える 4

3

これでうまくいくはずです:

    final Pattern pattern = Pattern
            .compile("Mfr Part#: ([^ ]+) (Technologie|Mounting).*");
    final Matcher matcher = pattern
            .matcher("Mfr Part#: MBRB1045G Mounting");
    matcher.matches();
    System.out.println(matcher.group(1));

ただし、文字列がその特定のパターンを持っていることを確認することが重要でない場合は、より単純な式を使用することもできます。Mfr Part#: ([^ ]+) .*

また、パターンオブジェクトを保存して、後で使用するために再利用できることにも注意してください。これにより、パフォーマンスが向上します。

于 2012-05-08T18:43:05.900 に答える
0

私はおそらくを使用しますjava.util.Scanner。それはそうするための最適な方法ではないかもしれませんが、私の意見では最も快適です。
これは次のように機能します。

import java.util.Scaner;

String s = "Mfr Part#: MBRB1045G Technologie RZ137GA";
Scanner scn = new Scanner(s);
scn.next();
scn.next();
String partnumber = scn.next();
scn.next();
String technologie = scn.next();
scn.close();

変数には、partnumberが含まれMBRB1045Gtechnologie含まれますRZ137GA

于 2012-05-08T18:45:10.680 に答える
0

おそらく、グループ化された正規表現が最適です。(perlreのグーグル)

String input = "Mfr Part#: MBRB1045G Technologie";
String regexpression = "Mfr Part#: (\\w+) (\\w+)";
Pattern p = Pattern.compile(regexpression);
Matcher m = p.matcher(input);
if (m.matches()) {
    String part = m.group(1);
    String desc = m.group(2);

    System.out.println(part);
    System.out.println(desc);
}
于 2012-05-08T18:45:57.817 に答える
0

それを行うには2つの方法があります(そしておそらく他の方法もあります):regexpとgroups、またはindexOfとsubstring

1)正規表現とグループ

String input = "Mfr Part#: MBRB1045G Technologie";
Pattern p = Patter.compile("Mfr Part#: ([A-Z0-9]+) (Technologie|Mounting)");
Matcher m = p.matcher(input);
while(m.find()) {
    System.err.println("Part number: "+m.group(1)+ "Second part is "+m.group(2);
}

2)indexOfとサブストリング

String prefix = "Mfr Part#: ";
String input = "Mfr Part#: MBRB1045G Technologie";
for (int i=  0;i<input.length();i++) {
    int index1 = input.indexOf(prefix);
    int index2 = index1+prefix.length();
    int index3 = input.indexOf(" ", );
    int index4 = input.indexOf(" ", index3+1);
    System.err.println("Part number: "+input.substring(index2, index3)
          + "Second part is "+input.substring(index3, index4);
    index = index4;

}

警告:私はそれを実行していないので、タイプミスを修正する必要があるかもしれません。

于 2012-05-08T18:46:13.760 に答える