我想知道如何让代码在白天和年份之间忽略逗号。
Ex)我希望java将“1月15日1983”(没有行分隔)分成“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 :(得分:0)
使用String formattedInput = rawInput.replaceAll( ",", "")
然后解析formattedInput
字符串
答案 1 :(得分: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
答案 2 :(得分:0)
扫描仪使用的默认空白分隔符由Character.isWhitespace识别。
您可以阅读here。
也许你可以用不同的方式解决问题。阅读完整的行并将标记分解为标记。像这样:
String line = sc.nextLine();
String tokens = line.split(",");
...
答案 3 :(得分:0)
删除逗号(带replaceAll()
),然后拆分字符串:
String str = "January 15, 1983";
String[] arr = str.replaceAll(",","").split("[ ,]");
for(String s : arr) {
System.out.println(s);
}
输出:
January
15
1983
答案 4 :(得分:0)
String[] line = sc.nextLine().split(" ");
String month = line[0];
String day = line[1].replaceAll(",","");
String year = line[2];
答案 5 :(得分: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);
答案 6 :(得分:0)
作为更通用的解决方案,将字符串转换为日期时间对象。然后提取您需要的信息。
首先想到的可能是java.util.Date。不明智的是,这个类和它的伙伴java.util.Calendar是出了名的麻烦。知道的人使用Java {中的Joda-Time库或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();