如何删除字符数组中的"empty spot"?



我只是在修改java.lang,我有一个方法,它在字符串中查找整数,并识别它们,不包括非整数。然后我将如何删除所有剩余的";空槽";在数组中。我不知道这个代码是否会有帮助,但我无论如何都会说出来。

public static char[] lookForNums(@NotNull String str){
char[] strPointer = str.toCharArray();
char[] getNums = new char[str.length()];
for(int i = 0; i < str.length(); i++){
// point to X value in the array/string
char pointer = strPointer[i];
if(Character.isDigit(pointer)){
getNums[i] = pointer;
}
}
// Refinement/Garbage collection
for(int i = 0; i < getNums.length; i++){
if(getNums[i] == ' '){
getNums[i] = 'n'; // n as null placeholder (for nothing)
}
}
return getNums;
}// The challenge was I cant use String.charAt() or String.indexOf()

正如您所看到的,垃圾收集部分几乎是无用的。感谢阅读!我希望这不是重复的。

如果你不打算使用String.carAt((,你遍历数组的过程是很好的

您可以将所有数字复制到新数组中的正确位置,而不是将其复制到新阵列中的同一位置并计划清理。也就是说,不要在新数组中使用索引i,创建一个新索引,从零开始,只在将数字放入新数组时递增。所以副本看起来像

if(Character.isDigit(pointer)){
getNums[targetIndex++] = pointer;
}

但是,您需要将其全部复制到一个大小合适的新数组中。

(顺便说一句,我讨厌你叫那个"指针"。它不是指针。另外,不要叫你的结果getNums,这听起来像是方法名。叫它"结果"或只是"nums"。(

您可以通过StringBuilder将isDigit字符放入一个新的String中来做同样的事情,但由于看起来您想要一个char[]作为结果,这种方式也很好。

相关内容

  • 没有找到相关文章

最新更新