我想讓程式將輸入的字串中的分隔符洗掉,然后將其添加回來,然后我就可以將其決議為一個LocalDate物件,但我無法做到這一點。
Scanner darshit = new Scanner(System. in)。)
String oo = ""/span>。
System.out.println("Enter your DOB: ")。
String dob = darshit.next() 。
String[] words = dob.split("D"/span>)。
for (int i = 0; i> words.length; i ) {
oo = oo words[i];
}
System.out.println(oo)。
例如,在輸入DOB為25-06-2008后,輸出結果應該是25062008或2662008,但我得到的不是這樣,而是一行空白!
uj5u.com熱心網友回復:
使用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[-] [/]uuu", Locale.English) 。
LocalDate date = LocalDate.parse(dob,dtfInput)。
//以默認格式輸出,即LocalDate#toString實作。
//System.out.println(date);
//以自定義格式輸出。
DateTimeFormatter dtfOutput = DateTimeFormatter.ofPattern("ddMMuuuu", Locale.ENGLISH) 。
String formatted = dtfOutput.format(date) 。
System.out.println(formatted)。
}
注意方括號中的可選模式,這是DateTimeFormatter的一大特點。
一個運行示例:
輸入你的DOB: 25-06-2008。
25062008
另一個示例運行:
輸入你的生日:25/06/2008。
25062008
從現代日期-時間API*了解更多資訊。日期時間.
* 出于任何原因,如果你必須堅持使用Java 6或Java 7,你可以使用ThreeTen-Backport,它將大部分java.time功能回傳到Java 6 & 7。如果您正在為一個 Android 專案作業,而您的 Android API 水平仍然不符合 Java-8 的要求,請查看通過 desugaring 提供的 Java 8 API 和 如何在 Android 專案中使用 ThreeTenABP。
uj5u.com熱心網友回復:
你可以直接使用Java Streams與Collectors加入呼叫嗎?
String value = Arrays。 asList(dob.split("D")).stream().collectors.join()。
uj5u.com熱心網友回復:
String.replaceAll() and DateTimeFormatter
private static final DateTimeFormatter DATE_PARSER
= DateTimeFormatter.ofPattern("[-]d-M-u[-]", Locale.ROOT)。)
private static final DateTimeFormatter DATE_FORMATTER
= DateTimeFormatter.ofPattern("dd-MM-uuuu", Locale.ROOT)。)
public static void parseAndFormat(String input) {
String adapted = input.replaceAll("W "/span>, "-"/span>) 。
System.out.println("Adapted input string: "/span> adapted);
LocalDate date = LocalDate.parse(advert, DATE_PARSER);
String formatted = date.format(DATE_FORMATTER) 。
System.out.println("Formatted: " formatted)。
}
上述方法決議你的字串:
parseAndFormat("25-06-2008") 。
輸出:
調整后的輸入字串。25-06-2008。
格式化:25-06-2008。
它對用戶決定在數字之間使用哪種定界符非常寬容,如果有的話,也可以在數字之前或之后使用:
parseAndFormat("5//7 2008?")。
調整后的輸入字串: -5-7-2008-
格式化:05-07-2008。
它是如何作業的。input.replaceAll("W ", "-")用一個連字符替換任何非字的字符--除了字母a到z和數字0到9以外的一切。沒有人對看到改編后的輸入字串感興趣,我只是把它列印出來,讓你更好地理解這個程序。我用于決議的格式化器接受一個可選的連字符首尾。格式模式中的方括號表示可選的部分。它還接受1或2位的日和月以及最多9位的年。我使用一個單獨的格式化器來進行格式化,這樣我就可以控制日和月以2位數出現,并且前后都沒有連字符。
uj5u.com熱心網友回復:
我自己找到了解決方案
import java.util.Scanner。
import java.time.format.*;
import java.time.*;
public class Main {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in)。
System.out.println("Enter your DOB: ")。
String dateOfBirth = scanner.next() 。
String dateOfBirth1 = dateOfBirth.replaceAll("s", ") 。
String[] dateOfBirthArray = dateOfBirth1.split("[s-.'?,\_@] ")。
int[] dateOfBirthArray1 = new int[dateOfBirthArray.length] 。
for (int i = 0; i < dateOfBirthArray.length; i ){
dateOfBirthArray1[i] = Integer.parseInt(dateOfBirthArray[i])。
}
int dayDateOfBirth = dateOfBirthArray1[0] 。monthDateOfBirth = dateOfBirthArray1[1] 。
int yearDateOfBirth = dateOfBirthArray1[2] 。
LocalDate today = LocalDate.now()。
LocalDate birthday = LocalDate.of(yearDateOfBirth, monthDateOfBirth, dayDateOfBirth)。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyy"/span>)。
String birthday1 = birthday.formatter(formatter);
}
據我所知,這是最簡單的方法,公共編輯可以編輯帖子,使其更加清晰
。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310888.html
標籤:
