Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在擦除包含null的字符串_Java_Regex_String_Null_Replaceall - Fatal编程技术网

Java 正在擦除包含null的字符串

Java 正在擦除包含null的字符串,java,regex,string,null,replaceall,Java,Regex,String,Null,Replaceall,我想删除的消息或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 = n

我想删除的消息或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
第二个代码到底发生了什么?
谢谢

正如Boris所说,还有其他方法,但主要问题是,
replaceFirst
使用正则表达式,而pipe是正则表达式中的一个特殊字符

下面介绍了该代码的工作原理:

b.trim().replaceFirst(Pattern.quote(b.trim().substring(0,28)), ""+t)

正如Boris所说,还有其他方法,但主要问题是,
replaceFirst
采用正则表达式,而管道是正则表达式中的一个特殊字符

下面介绍了该代码的工作原理:

b.trim().replaceFirst(Pattern.quote(b.trim().substring(0,28)), ""+t)

正如Boris所说,还有其他方法,但主要问题是,
replaceFirst
采用正则表达式,而管道是正则表达式中的一个特殊字符

下面介绍了该代码的工作原理:

b.trim().replaceFirst(Pattern.quote(b.trim().substring(0,28)), ""+t)

正如Boris所说,还有其他方法,但主要问题是,
replaceFirst
采用正则表达式,而管道是正则表达式中的一个特殊字符

下面介绍了该代码的工作原理:

b.trim().replaceFirst(Pattern.quote(b.trim().substring(0,28)), ""+t)

如果您想简单地去掉“null”文本字符串,而不存在上面的正则表达式问题,并且快速、干净,只需直接替换“null”字符串

b.replace("null", "") 

如果您想简单地去掉“null”文本字符串,而不存在上面的正则表达式问题,并且快速、干净,只需直接替换“null”字符串

b.replace("null", "") 

如果您想简单地去掉“null”文本字符串,而不存在上面的正则表达式问题,并且快速、干净,只需直接替换“null”字符串

b.replace("null", "") 

如果您想简单地去掉“null”文本字符串,而不存在上面的正则表达式问题,并且快速、干净,只需直接替换“null”字符串

b.replace("null", "") 

这个项目的主要目的是什么?如果只是删除字符串中的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());
}
String tes=b.replace(“null”,即“”);
字符串[]aux=tes.split(“\\\\”);
对于(int i=0;i

通过这种方式,您可以将这两种信息分开。我希望这将对您有所帮助:)

该计划的主要目的是什么?如果只是删除字符串中的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());
}
String tes=b.replace(“null”,即“”);
字符串[]aux=tes.split(“\\\\”);
对于(int i=0;i

通过这种方式,您可以将这两种信息分开。我希望这将对您有所帮助:)

该计划的主要目的是什么?如果只是删除字符串中的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());
}
String tes=b.replace(“null”,即“”);
字符串[]aux=tes.split(“\\\\”);
对于(int i=0;i

通过这种方式,您可以将这两种信息分开。我希望这将对您有所帮助:)

该计划的主要目的是什么?如果只是删除字符串中的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());
}
String tes=b.replace(“null”,即“”);
字符串[]aux=tes.split(“\\\\”);
对于(int i=0;i

通过这种方式,您可以将两个信息分开。我希望这对您有所帮助:)

旁注:
b.trim()!=空值
将永远不会帮助您。如果
b
为空,您将得到一个调用
trim()
的NPE。如果
b
不为null,则
trim()
最坏情况下将返回一个空字符串。为什么不在空格上拆分并获取前两个元素
replaceFirst
依赖于正则表达式-读取。管道在正则表达式中有特殊含义。侧注:
b.trim()!=空值
将永远不会帮助您。如果
b
为空,您将得到一个调用
trim()
的NPE。如果
b
不为null,则
trim()
最坏情况下将返回一个空字符串。为什么不在空格上拆分并获取前两个元素
replaceFirst
依赖于正则表达式-读取。管道在正则表达式中有特殊含义。侧注:
b.trim()!=空值
将永远不会帮助您。如果
b
为空,您将得到一个调用
trim()
的NPE。如果
b
不为null,则
trim()
最坏情况下将返回一个空字符串。为什么不在空格上拆分并获取前两个元素
replaceFirst
依赖于正则表达式-读取。管道在正则表达式中有特殊含义。侧注:
b.trim()!=空值
将永远不会帮助您。如果
b
为空,您将得到一个调用
trim()
的NPE。如果
b
不为null,则
trim()
最坏情况下将返回一个空字符串。为什么不在空格上拆分并获取前两个元素
replaceFirst
依赖于正则表达式-读取。管道在regex中有一个特殊的含义。为什么我想不起来。哈哈。谢谢兄弟。很好,很简单。为什么我想不起来。哈哈。谢谢兄弟。很好,很简单。为什么我想不起来。哈哈。谢谢兄弟。很好,很简单。为什么我想不起来。哈哈,谢谢兄弟。