我们可以从 java 中删除不需要的分隔符吗

Dar*_* ff 1 java date

我希望程序接受输入并从该字符串中删除分隔符,然后将其添加回来,然后我可以稍后将其解析为对象LocalDate,但我无法执行所需的操作。

Scanner darshit = new Scanner(System.in);
String oo = "";
System.out.println("Enter your DOB: ");
String dob = darshit.next();
String[] words = dob.split("\\D");
for (int i = 0; i > words.length; i++) {
    oo = oo + words[i];
}
System.out.println(oo);
Run Code Online (Sandbox Code Playgroud)

例如,输入 DOB 25-06-2008 后,输出应该是 25062008 或 2662008,但我得到的不是这个,而是一个空行!

Arv*_*ash 7

用于DateTimeFormatter解析输入字符串LocalDate,然后将其格式化LocalDate为所需格式的字符串。

演示:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner darshit = new Scanner(System.in);
        System.out.print("Enter your DOB: ");
        String dob = darshit.next();
        DateTimeFormatter dtfInput = DateTimeFormatter.ofPattern("dd[-][/]MM[-][/]uuuu", Locale.ENGLISH);

        LocalDate date = LocalDate.parse(dob, dtfInput);
        // Output in the default format i.e. LocalDate#toString implementation
        // System.out.println(date);

        // Output in a custom format
        DateTimeFormatter dtfOutput = DateTimeFormatter.ofPattern("ddMMuuuu", Locale.ENGLISH);
        String formatted = dtfOutput.format(date);
        System.out.println(formatted);
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意方括号中的可选模式,这是DateTimeFormatter.

示例运行:

Enter your DOB: 25-06-2008
25062008
Run Code Online (Sandbox Code Playgroud)

另一个示例运行:

Enter your DOB: 25/06/2008
25062008
Run Code Online (Sandbox Code Playgroud)

Trail: Date Time了解有关现代日期时间 API *的更多信息。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,则可以使用ThreeTen-Backport,它将大多数java.time功能向后移植到 Java 6 和 7。如果您正在处理 Android 项目和 Android API level 仍然不符合 Java-8,请检查通过脱糖可用的 Java 8+ API以及如何在 Android 项目中使用 ThreeTenABP