2016-08-01 125 views
0

我有一個包含標識的一例的大字符串:這裏打破大字符串成小字符串

HD47-4585-GG89

在上述我有一個單一的對象的ID,但有時也可能包含多個對象的ID是這樣的:

HD47-4585-GG89-KO89-9089-RT45 2個物體

以上富人IDS現在我想轉換一個波夫字符串數組或在多個小字符串 類似:

ID1 = HD47-4585-GG89

ID2 = KO89-9089-RT45

每一個ID富人固定在這裏它的字符數14(計數的符號),並在一個字符串中的總ID的數量是不確定的

我不知道如何做到這一點,任何人都可以指導我呢?

我認爲,所有我需要做的就是剪輯串的前14個字符,然後將變量分配給它,並重復這一點,直到字符串是空的

+1

你的方法有什麼問題? –

+0

我不是一個java人我必須爲服務器端代碼這就是爲什麼我不知道從哪裏開始@JornVernee –

+0

我得到了這個api's = s.substring(0,Math.min(s.length( ),14));'修剪前14個字符,但如何處理這個'-'符號結合兩個id的 –

回答

2

您還可以使用正則表達式:

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] 

Ideone

雖然這假定每組字符(HD47)是4長。

1

使用番石榴分配器

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 =新的StringTokenizer(字符串, 「 - 」);

而(st.hasMoreTokens()){

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

}

這些令牌可以使用索引就可以得到所需的數據被存儲在某些陣列,然後。

+0

[_「StringTokenizer是一個保留的兼容性遺留類,儘管它在新代碼中的使用不受歡迎。」_](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);