删除特殊符号/分隔符例如点,逗号, - ,int out

问题描述:

我想让这个人在他/她的生日的日期写下来,之后我想将它与pi的数量进行比较。 但我希望程序是灵活的。因此,日期不应该像 daymonthyear(13091975),但也像day.month.year(13.09.1975)或像日 - 月 - 年(13-09-1975) 我已经找到了一个想法,但它不做工删除特殊符号/分隔符例如点,逗号, - ,int out

String sep = ""; 
String geb = nf_datum.getText(); 
geb = geb.replaceAll(".", Matcher.quoteReplacement(sep)); 

我发现这个想法用“的replaceAll”在这里:replaceAll "/" with File.separator 我希望有人能帮助我吗?

+0

我不舒尔你如何的问题是指:d,但它是一个GUI和nf_datum是多少场,后来我把数字填进一个数组 – Jana

+0

你的java版本是什么?你可以使用Java 8吗? –

+0

当你说“它不工作” - 它以什么方式不起作用?你得到一个错误,或只是不是你期望的输出?一般来说,试图编写自己的代码来处理日期解析和格式化逻辑是一个非常糟糕的主意; Java内置许多不同的实用程序以帮助您完成工作。我建议你看一下文档,从这里开始(https://docs.oracle.com/javase/tutorial/i18n/format/dateintro.html),看看Java会免费给你什么。 – DaveyDaveDave

使用java8你可以得到的字符串,并定义一个DateTimeFormatter,这会给您可以灵活地解析字符串转换成LOCALDATE的,你不需要照顾字符串如何“看起来像”,之后你会得到LOCALDATE的对象,从中可以获取的年,月,日

String geburtstag = "-"; 
DateTimeFormatter formatter = DateTimeFormatter 
      .ofPattern("[ddMMyyyy]" + "[ddMMyyyy]" + "[dd.MM.yyyy]" + "[dd-MM-yyyy]"); 
// case1 
geburtstag = "23.06.2017"; 
LocalDate ldt = LocalDate.parse(geburtstag, formatter); 
System.out.println("Year: " + ldt.getYear()); 
System.out.println("Month: " + ldt.getMonthValue()); 
System.out.println("Day: " + ldt.getDayOfMonth()); 
// case2 
geburtstag = "23062017"; 
ldt = LocalDate.parse(geburtstag, formatter); 
System.out.println("Year: " + ldt.getYear()); 
System.out.println("Month: " + ldt.getMonthValue()); 
System.out.println("Day: " + ldt.getDayOfMonth()); 
// case3 
geburtstag = "23-06-2017"; 
ldt = LocalDate.parse(geburtstag, formatter); 
System.out.println("Year: " + ldt.getYear()); 
System.out.println("Month: " + ldt.getMonthValue()); 
System.out.println("Day: " + ldt.getDayOfMonth()); 
+0

说实话我根本不懂你的(甚至没有开头):( – Jana

+0

哪部分@Jana? –

+0

在开始时你定义了DateTimeFormatter,对吧?什么意思是白衣.of Pattern?我不知道指令是什么意思或做什么,然后你用解析的方式转换LocalDate在什么地方?(因为ddMMyyyy没问题,我需要这种日期,所以我只是想把日期,如果它是用另一种方式编写的话)。 – Jana