我在 Java 中有一套看起来像
[0.99998945, line10Rule:14013, noOfCommits:0]
并且,我想从其元素中删除所有数字数字和冒号“:”以获取
[line10Rule, noOfCommits]
最好的方法是什么?
现在更正:
String[] array = new String[set.size()]; // create a String array of the same size as the set
set.toArray(array); // copy the sets content into the array
set.clear(); // clear the set
for (String string : array) { // iterate through the array
set.add(string.replaceAll("[0-9]*$", "")); // remove the digits and put the resulting String back into the set
}
@jlordo:感谢您指出。我忘记了,迭代器在字符串的副本上工作。这可能不优雅(迭代这么多循环等)但它有效:D
问候克里斯托夫
没办法,您将不得不逐项重新创建设置。要用“”替换数字,请考虑 String.replace()。
试试这个
List<String> list = new ArrayList<String>(Arrays.asList("0.99998945", "line10Rule:14013", "noOfCommits:0"));
ListIterator<String> i = list.listIterator();
while(i.hasNext()) {
String s = i.next();
int p = s.indexOf(':');
if (p > 0) {
i.set(s.substring(0, p));
} else {
i.remove();
}
}
System.out.println(list);
输出
[line10Rule, noOfCommits]