gpt4 book ai didi

java - 将数组 ( String[] ) 表示为带有范围的字符串 CSV

转载 作者:行者123 更新时间:2023-12-01 05:30:29 27 4
gpt4 key购买 nike

我有一个字符串数组,其中包含用任意数量的零填充的数字(无符号整数),例如:

[ 0001, 0002, 0003, 0005,0007, 0010,0011,0012,0013,0014, 0015 ]

我想将数组转换为表示字符串,表示字符串应使用范围表示( 0000-0003 )聚合相邻值,并将非相邻值聚合为逗号分隔值,例如上面的字符串数组应表示为以下表示字符串:

0001-0003, 0005, 0007, 0010-0015

最好/最简单/更易读的方法是什么(无需编写大量代码:-))?

谢谢。

最佳答案

如果我正确理解了要求,那么以下代码应该适合您:(希望它不是真正的大量代码:-))

String[] arr = new String[] {"0001", "0020", "0002", "0003", "0019", "0005", "0007",
"0010", "0018", "0011", "0012", "0013", "0014", "0015"};
Map<Integer, String> m = new TreeMap<Integer, String>();
for (String s : arr)
m.put(new Integer(s), s);
Iterator<Entry<Integer, String>> it;
Integer prev = -1;
StringBuffer sb = new StringBuffer();
boolean isCont = false;
for (it=m.entrySet().iterator(); it.hasNext();) {
Entry<Integer, String> entry = it.next();
if (prev == -1)
sb.append(entry.getValue());
else if (entry.getKey() == (prev+1))
isCont = true;
else if (entry.getKey() > (prev+1)) {
if (isCont)
sb.append('-').append(m.get(prev)).append(", ");
else
sb.append(", ");
sb.append(entry.getValue());
isCont = false;
}
prev = entry.getKey();
}
if (isCont)
sb.append('-').append(m.get(prev));
System.out.println(sb);

输出:

0001-0003, 0005, 0007, 0010-0015, 0018-0020

关于java - 将数组 ( String[] ) 表示为带有范围的字符串 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9070505/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com