2014-09-25 110 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();