你怎么忽略逗号

时间:2014-09-25 19:56:55

标签: java

我想知道如何让代码在白天和年份之间忽略逗号。

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);

7 个答案:

答案 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();