2016-08-01 5 views
0

ich eine große Zeichenfolge haben, die IDs Beispiel enthält:brechen große String in kleine Strings

HD47-4585-GG89

hier an der oben i eine ID eines einzelnen Objekts, aber manchmal kann es enthalten IDs mehrerer Objekte wie folgt aus:

HD47-4585-GG89-KO89-9089-RT45

die oben haves ids von 2 Objekte jetzt möchte ich das eine konvertieren Bove Zeichenfolge zu einem Array oder in mehreren kleinen Strings etwas wie:

ID1 = HD47-4585-GG89

ID2 = KO89-9089-RT45

jeden ID haves einen festen Anzahl der Zeichen hier seine 14 (auch die Symbole gezählt) und die Anzahl der gesamten IDs in einem einzigen String ist nicht

Ich weiß nicht, wie es geht, kann mir jemand dabei helfen?

ich denke, alles, was ich tun müssen, ist die ersten 14 Zeichen der Zeichenfolge Clip dann eine Variable zuweisen, und wiederholen Sie diese bis Zeichenfolge ist leer

+1

Was ist falsch an Ihrer Methode? –

+0

Ich bin kein Java-Typ Ich muss es für einen Server-Side-Code tun das ist, warum ich nicht weiß, wo ich anfangen soll @JornVernee –

+0

Ich habe diese api 's = sstring (0, Math.min (s.length (), 14)); 'zum Trimmen der ersten 14 Zeichen, aber wie man mit diesem '-'-Symbol umgehen kann, das zwei IDs kombiniert –

Antwort

2

Sie auch regex verwenden:

String input = "HD47-4585-GG89-KO89-9089-RT45"; 

Pattern id = Pattern.compile("(\\w{4}-\\w{4}-\\w{4})"); 
Matcher matcher = id.matcher(input); 

List<String> ids = new ArrayList<>(); 

while(matcher.find()) { 
    ids.add(matcher.group(1)); 
} 

System.out.println(ids); // [HD47-4585-GG89, KO89-9089-RT45] 

See Ideone.

Obwohl dies voraussetzt, dass jede Gruppe von Zeichen (HD47) 4 lang ist.

1

Mit Guave Splitter

class SplitIt 
{ 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     String idString = "HD47-4585-GG89-KO89-9089-RT45-HD47-4585-GG89"; 

     Iterable<String> result = Splitter 
       .fixedLength(15) 
       .trimResults(CharMatcher.inRange('-', '-')) 
       .split(idString); 
     String[] parts = Iterables.toArray(result, String.class); 
     for (String id : parts) { 
      System.out.println(id); 
     } 
    } 
} 
1

StringTokenizer st = new StringTokenizer (String, "-");

while (st.hasMoreTokens()) {

System.out.println(st.nextToken()); 

}

diese Token können in einigen Arrays gespeichert werden und dann Index verwenden, können Sie erforderlichen Daten erhalten.

+0

[_ "StringTokenizer ist eine Legacy-Klasse, die aus Kompatibilitätsgründen beibehalten wird, obwohl ihre Verwendung in neuem Code entmutigt wird." _] (Https://docs.oracle.com/javase/8/docs/api /java/util/StringTokenizer.html) –

0
String text = "HD47-4585-GG89-KO89-9089-RT45"; 
String first = ""; 
String second = ""; 
List<String> textList = Arrays.asList(text.split("-")); 
for (int i = 0; i < textList.size()/2; i++) { 
    first += textList.get(i) + "-"; 
} 
for (int i = textList.size()/2; i < textList.size(); i++) { 
    second += textList.get(i) + "-"; 
} 
first = first.substring(0, first.length() - 1); 
second = second.substring(0, second.length() - 1); 
Verwandte Themen