我有一个大字符串,其中包含Id的例子:
HD47-4585-GG89
在上面我有一个单个对象的id但有时候它可能包含多个这样的id的对象:
HD47-4585-GG89-KO89-9089-RT45
上面有2个对象的id现在我想将上面的字符串转换为数组或多个小字符串 类似的东西:
id1 = HD47-4585-GG89
id2 = KO89-9089-RT45
每个id中都有一个固定数量的字符,其中14个字符(计算符号)和单个字符串中的总ID数不确定
我不知道如何做到这一点任何人都可以指导我吗?
我认为我所要做的就是剪切字符串的前14个字符,然后为其分配一个变量并重复此操作,直到字符串为空
答案 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);