我的消息或println中有一个空值我要删除,当我只使用这样的代码时,所有这些都成功。
之前的消息:
message = 2014-06-02 14:53:37.103 null tes
以下是删除空字的代码。
public static void main(String[] args) {
//final int month = Integer.parseInt(period[0]), year = Integer.parseInt(period[1]);
Date x = new Date();
Timestamp t = new Timestamp(x.getTime());
String a = "null";
String b = t+" " +a + " tes";
String tes = (b.trim()!= null && b.trim().length()>=23) ? b.trim().replaceFirst(b.trim().substring(0,28), ""+t) : b;
System.out.println("message = " + tes);
}
打印输出是对的。它是这样的:
message = 2014-06-02 14:53:37.103 tes
但是当我插入此|
时,打印出错了。我正在使用它作为分隔符。
这是出错的代码。
public static void main(String[] args) {
//final int month = Integer.parseInt(period[0]), year = Integer.parseInt(period[1]);
Date x = new Date();
Timestamp t = new Timestamp(x.getTime());
String a = "null";
String b = t+"| " +a + " tes";
String tes = (b.trim()!= null && b.trim().length()>=23) ? b.trim().replaceFirst(b.trim().substring(0,28), ""+t) : b;
System.out.println("message = " + tes);
}
这是打印输出:
message = 2014-06-02 14:58:03.148| null tes
实际上第二个代码会发生什么? 感谢
答案 0 :(得分:2)
正如鲍里斯所说,还有其他方法,但主要问题是replaceFirst
采用正则表达式,而管道是正则表达式中的特殊字符。
下面介绍Pattern.quote
代码应该有效:
b.trim().replaceFirst(Pattern.quote(b.trim().substring(0,28)), ""+t)
答案 1 :(得分:1)
如果你想简单地删除“空”'文本字符串没有上面的regEx问题,而且快速而干净,只需替换' null'字符串直接。
b.replace("null", "")
答案 2 :(得分:0)
该计划的主要目的是什么?如果只是为了删除String中的null,我会按照JamasA的说法去做。否则,如果你想获得时间戳和" tes"字符串在两个干净的字符串中我会这样做:
String tes = b.replace("null", "");
String[] aux = tes.split("\\|");
for (int i = 0; i < aux.length; i++) {
System.out.println(aux[i].trim());
}
通过这种方式,您可以将两种信息分开。我希望它对您有所帮助:)