2013-05-28 59 views
3

下面的代码:改变catch块内的变量的值

public static String removeDateFromString(String txt) { 
    String dateRemovedString = new String(); 
    String[] str = txt.split("-"); 

    for(int i=0; i<str.length; i++) { 

     SimpleDateFormat format = new SimpleDateFormat("dd MMM"); 
     try { 
      format.parse(str[i]); 
     } catch(ParseException e) { 
      dateRemovedString.concat(str[i]); 
     } 
    } 
    return dateRemovedString; 
} 

对于,

输入文本:Cricket Match - 01 Jul

输出文本:""(空字符串)

但我想要输出:Cricket Match

我该怎么办?

回答

14

字符串是immutable

注意:String类是不变的,所以它一旦建立一个 String对象不能改变。该字符串类有一些 方法,其中一些将在下面讨论,似乎修改 字符串。由于字符串是不可变的,因此这些方法实际上做的是 创建并返回一个包含 操作结果的新字符串。

dateRemovedString = dateRemovedString.concat(str[i]); 

的StringBuilder是可变的。 StringBuilder用于构建一个字符串。在这种情况下使用StringBuilder。示例用法:

StringBuilder dateRemovedString = new StringBuilder(); 
dateRemovedString.append(str[i]); 
return dateRemovedString.toString(); 
+0

谢谢,现在它的工作。 –

0

如果您确定输入的文本格式,那么请不要打扰异常。

采用分体式或正则表达式只需提取你感兴趣的部分,然后对其进行处理