0

タイトルは単純なようです。しかし、私は良いアイデアを得ることができません。こんな状況です

Javaプログラムにこのような文字列があります

String scz="3282E81WHT-22/24";  

上記の文字列を3つの文字列に分割したいので、

最初の文字列値は3282e81にする必要があります。

次の文字列はWHTである必要があります(つまり、上記の文字列と の文字列部分this part is Always of 3 Characters)。

次の文字列値は22/24である必要があります( Which will always occur after -)

要するに

String first= /* do some expression on scz And value should be "3282e81" */;
String second= /* do some expression on scz And value should be "WHT" */;
String third= /* do some expression on scz And value should be "22/24" */;

入力も次のようになります

scz="324P25BLK-12"; 

したがって、324P25が最初の文字列になり、BLKが 2 番目になります ( of 3 Characters)。12は3番目になります( After - symbol )

これを解決するには?

4

10 に答える 10

4

このような正規表現を使用でき、メソッドを(\d+[A-Z]\d+)([A-Z]+)-([/\d]+)使用しMatcher.group(int)て文字列を 3 つのグループに分割できます。

コードスニペット

String str = "3282E81WHT-22/24";
//str = "324P25BLK-12";
Pattern pattern = Pattern.compile("(\\d+[A-Z]\\d+)([A-Z]+)-([/\\d]+)");
Matcher match = pattern.matcher(str);
System.out.println(match.matches());
System.out.println(match.group(1));
System.out.println(match.group(2));
System.out.println(match.group(3));

出力

true
3282E81
WHT
22/24
于 2013-08-20T04:54:58.117 に答える
1

この目標を達成するには、subString() メソッドを使用できます。subString には多数のオーバーロードがあります。

最初の文字列用

String first=scz.subString(0,6);
String second=scz.subString(7,9);
于 2013-08-20T04:49:51.490 に答える
1

次の正規表現を使用して、上記の型の文字列を取り出すことができます。

\d+[A-Z]\d{2}|[A-Z]{3}|(?<=-)[\d/]+

Java では、上記の正規表現を次の方法で使用できます。

  Pattern pattern = Pattern.compile("\\d+[A-Z]\\d{2}|[A-Z]{3}|(?<=-)[\\d/]+");
  Matcher matcher = pattern.matcher("3282E81WHT-22/24");
  while (matcher.find()) {
        System.out.println(matcher.group());
  }

出力:

3282E81
WHT
22/24
于 2013-08-20T04:51:45.107 に答える
0

文字列の長さが scz で固定されている場合、first、second、および third を使用できます

  String first=scz.subString(0,6);
  String second=scz.subString(7,9);
  String third=scz.subString(10,scz.length());
于 2013-08-20T04:52:38.687 に答える
0

私の解決策をチェックしてください -

class Main {
    public static void main(String[] args) {
            String first = "";
            String second = "";
            String third = "";

            String scz="3282E81WHT-22/24";
            String[] portions = scz.split("-");
            if (portions.length > 1) {
                    third = portions[1];
            }

            String[] anotherPortions = portions[0].split("[a-zA-Z]+$");
            if (anotherPortions.length > 0) {
                    first = anotherPortions[0];
            }

            second = portions[0].substring(first.length());

            System.out.println(first);
            System.out.println(second);
            System.out.println(third);
    }
}

ライブデモ

于 2013-08-20T05:05:19.937 に答える
0

これを試すことができます

       String scz="3282E81WHT-22/24";
       String[] arr=scz.split("-");
       System.out.println("first: "+arr[0].substring(0,7));
       System.out.println("second: "+arr[0].substring(7,10));
       System.out.println("third: "+arr[1])
于 2013-08-20T05:04:03.323 に答える