2014-09-25 111 views
1

我想知道如何讓代碼在一天和一年之間忽略逗號。例如,我想要java將「1983年1月15日」(沒有行分隔)作爲字符串(月)分爲「1月」,將15作爲整數(日),將1983作爲整數(年) 。你怎麼忽略逗號

我嘗試使用下面的代碼,我想到了,但是當我運行它時,它不能忽略逗號。

String month; 
int day, year; 
Scanner keyboardIn = new Scanner(System.in); 
System.out.println("Enter a date\n(Month Day, Year) or (XX/XX/XXXX):"); 
month = keyboardIn.next(); 
day = keyboardIn.nextInt(); 
year = keyboardIn.nextInt(); 
System.out.println(month + " " + day + " " + year); 
+0

見['String':'分裂()'](http://docs.oracle.com/javase/7/docs/api/java/lang/String。 html#split%28java.lang.String%29) – Barranka 2014-09-25 19:59:13

+1

http://www.mkyong.com/java/how-to-convert-string-to-date-java/ – Randy 2014-09-25 20:01:15

+1

用正則表達式分割,也許'String regex =「 ?\\ S + | /「' – 2014-09-25 20:06:25

回答

0

遙遠而明亮的","從線和使用默認分隔符再次掃描:

Scanner keyboardIn = new Scanner(System.in); 

System.out.println("Enter a date\n(Month Day, Year) or (XX/XX/XXXX):"); 

String date = keyboardIn.nextLine().replaceAll(",", ""); 

Scanner dateScanner = new Scanner(date); 

String month = dateScanner.next(); 
int day = dateScanner.nextInt(); 
int year = dateScanner.nextInt(); 

System.out.println(month + " " + day + " " + year); 
0

使用String formattedInput = rawInput.replaceAll(",", "")然後解析formattedInput

0

您可以在字符串中使用Split這樣

String date = "January 15, 1983 "; 
     String[] chunks = date.split(" "); 
     System.out.println(chunks[0]); 
     System.out.println(chunks[1].substring(0, chunks[1].length() - 1)); 
     System.out.println(chunks[2]); 

輸出

January 
15 
1983 
0

默認空白分隔符通過掃描儀使用正如Character.isWhites所認可的步伐。您可以閱讀here

也許你可以用不同的方式來解決問題。閱讀完整的行,並將其刺入令牌。是這樣的:

String line = sc.nextLine(); 
String tokens = line.split(","); 
... 
0

卸下逗號(與replaceAll()),然後分割字符串:

String str = "January 15, 1983"; 
String[] arr = str.replaceAll(",","").split("[ ,]"); 
for(String s : arr) { 
    System.out.println(s); 
} 

輸出:

January 
15 
1983 
0
String[] line = sc.nextLine().split(" "); 
String month = line[0]; 
String day = line[1].replaceAll(",",""); 
String year = line[2]; 
0

日期時間對象

作爲一個更通用的解決方案,將字符串轉換爲日期時間對象。然後提取你需要的信息。

首先想到的可能是java.util.Date。作爲該類的不良建議,它的合作伙伴java.util.Calendar是非常麻煩的。那些知道的人使用Joda-Time庫或Java 8中的java.time包(受Joda-Time的啓發,由JSR 310定義)。兩者均提供LocalDate類,以表示沒有任何日期或時區的僅限日期的值。

約達時間

String input = "January 15, 1983"; 
DateTimeFormatter formatter = DateTimeFormat.forStyle("L-").withLocale(Locale.US); 
LocalDate localDate = formatter.parseLocalDate(input); 
int month = localDate.getMonthOfYear(); 
int year = localDate.getYear(); 
int dayOfMonth = localDate.getDayOfMonth();