2017-09-14 1011 views
0

我想删除此方括号。我试过了,但它给出了相同的输出。从Java中的字符串中删除方括号

String datetime = [Thu Sep 14 17:00:00 GMT+05:30 2017]; 
datetime=datetime.replaceAll("\\[", "").replaceAll("\\]",""); 

我在哪里出错了?

+0

您是否尝试过的东西? – Batty

+0

@Batty你可以看到代码在问题中。 –

+1

你的字符串分配是错误的。像'String datetime =“[Thu Sep 14 17:00:00 GMT + 05:30 2017]”;'你很好走。你的代码有效。 – Batty

回答

0

您应该可以将您的代码缩短到只需一个replaceAll调用。

datetime = datetime.replaceAll("[\\[\\]]", "") 

IdeoneIt!


正则表达式的详细

  • [ - 开放字符类
  • \\[\\] - 字面方括号
  • ] - 关闭字符类
0

如果你已经设置你自己的时间字符串,你为什么不只是设置方括号? String datetime = "Thu Sep 14 17:00:00 GMT+05:30 2017";

而你应该有一个编译器错误,因为你的字符串日期时间无效,因为它没有双引号。

另一方面,如果您从Java类Date接收到datetime字符串的数据,则可以使用SimpleDateFormat更改您收到的数据的格式。

如果你不知道如何使用SimpleDateFormat的,检查出来here

下面是它的一些简单的例子,你可以查看完整的教程here

public class GetCurrentDateTime { 

private static final DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 
private static final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"); 

public static void main(String[] args) { 

    Date date = new Date(); 
    System.out.println(sdf.format(date)); 

    Calendar cal = Calendar.getInstance(); 
    System.out.println(sdf.format(cal.getTime())); 

    LocalDateTime now = LocalDateTime.now(); 
    System.out.println(dtf.format(now)); 

    LocalDate localDate = LocalDate.now(); 
    System.out.println(DateTimeFormatter.ofPattern("yyy/MM/dd").format(localDate)); 

} 

}

+0

这绝对不是你的代码... –

+0

这不是,那又如何?我可以自己写它,它会非常相似,重点是相同的,我只是想给出快速和明确的答案。 –

+0

整个问题的关键是连接/鉴定任何外部参考,而且您似乎已经根据我的评论做了这些,这正是我想要的。我休息我的情况。不需要防守。 –

0

别t用空格替换括号,用正则表达式将括号内的内容匹配起来,然后用内部部分替换整个字符串。

像这样

String datetime = "[Thu Sep 14 17:00:00 GMT+05:30 2017]"; 
datetime=datetime.replaceAll("\\[(.*)\\]", "$1"); 
System.out.println(datetime); // output is: Thu Sep 14 17:00:00 GMT+05:30 2017