我必须修剪(包括字符串中的空格)列表中的所有字符串。我写了一个使用正则表达式进行修剪的方法。我正在使用strArray[i] = trimString(strArray[i]);
而不是使用增强的for循环。我假设因为字符串是不可变的,这种分配回相同数组元素的方式是正确的。我是对的吗?
public void trimStringArray(String[] strArray){
if(strArray!= null && strArray.length > 0){
for(int i=0;i<strArray.length;i++){
strArray[i] = trimString(strArray[i]);
}
}
}
答案 0 :(得分:3)
是的,没关系,你将无法使用增强的for循环。但是,您可以通过删除length > 0
检查来简化代码 - 执行循环0次没有任何损害......而且我个人通常期望参数这样一个无论如何,方法都是非null,导致代码如下:
public void trimStringArray(String[] strArray) {
Preconditions.checkNotNull(strArray);
for(int i = 0; i < strArray.length; i++) {
strArray[i] = trimString(strArray[i]);
}
}
(在这种情况下,Preconditions.checkNotNull
来自Guava。)
你可以让它接受null
- 但是你真的有很多情况下有一个空数组是有效的,但你想要修剪一切,如果不是吗?
作为一个可读性的东西,我还鼓励你加入更多的空白 - 这绝对是个人偏好,但我知道我发现没有空格的代码,比如这个,更难阅读:
for(int i=0;i<strArray.length;i++){
答案 1 :(得分:1)
是的,您的代码是正确的。
请注意,strArray.length > 0
检查是多余的:当strArray
长度为零时,循环条件将自动处理。
答案 2 :(得分:1)
是的,可以。我会在方法签名中添加add final。通过添加final,您可以确定错误地没有重新分配引用(增加了安全性)。
public void trimStringArray(final String[] strArray){