2016-08-01 53 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);