Java中的字符串修剪

时间:2012-02-10 17:14:13

标签: java string

我必须修剪(包括字符串中的空格)列表中的所有字符串。我写了一个使用正则表达式进行修剪的方法。我正在使用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]);
        }           
    }
}

3 个答案:

答案 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){