将大字符串分解成小字符串

时间:2016-08-01 16:06:37

标签: java string android-studio

我有一个大字符串,其中包含Id的例子:

HD​​47-4585-GG89

在上面我有一个单个对象的id但有时候它可能包含多个这样的id的对象:

HD​​47-4585-GG89-KO89-9089-RT45

上面有2个对象的id现在我想将上面的字符串转换为数组或多个小字符串 类似的东西:

id1 = HD47-4585-GG89

id2 = KO89-9089-RT45

每个id中都有一个固定数量的字符,其中14个字符(计算符号)和单个字符串中的总ID数不确定

我不知道如何做到这一点任何人都可以指导我吗?

我认为我所要做的就是剪切字符串的前14个字符,然后为其分配一个变量并重复此操作,直到字符串为空

4 个答案:

答案 0 :(得分: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 :(得分: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);
        }
    }
}

答案 2 :(得分:1)

StringTokenizer st = new StringTokenizer(String,“ - ”);

while(st.hasMoreTokens()){

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

}

这些令牌可以存储在某些数组中,然后使用索引可以获得所需的数据。

答案 3 :(得分: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);