Java:从String中提取值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:从String中提取值?相关的知识,希望对你有一定的参考价值。

我是Java的新手,我正在尝试从与日期相关的用户输入字符串中提取值,并将其拆分为DD-MM-YYYY格式。

我试着使用下面的代码:

String inputString = "s.param1"; 
String[] arraySplit_3 = inputString.split("-");
for (int i=0; i < arraySplit_3.length; i++){
    System.out.println(arraySplit_3[i]);
}

s.param1获取用户的输入,我使用单独的excel文件。

如果s.param1 = 15-05-2010

我希望得到这个输出:

DD:15

MM:05

YYYY:2010

有没有办法创建这样的方法?

答案

如果你的s.param1是变量的,它在String中获取日期,所以你不应该在引号中使用它。否则它将是String。变量名不能带点。它可能是sParam1。 但是当你设置日期而不是s.param1时,你创建的方法应该可行。

// input "15-05-2010"
String inputString = sparam1; 
String[] arraySplit_3 = inputString.split("-");
for (int i=0; i < arraySplit_3.length; i++){
    System.out.println(arraySplit_3[i]);
}

输出将是: 15 05 2010

如果你想在数字之前添加一些字符,请不要使用for循环。像这样使用它:

// ...
if (arraySplit_3 > 2) {
    System.out.println("DD: " + arraySplit_3[0]);
    System.out.println("MM: " + arraySplit_3[1]);
    System.out.println("YYYY: " + arraySplit_3[2]);
}

然后输出将是: DD:15 MM:05 YYYY:2010

另一答案

使用java.time.LocalDate解析这个。

// dd: Day of Month
// MM: Month of year
// yyyy: year, four digits
DateTimeFormatter format = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate date = LocalDate.parse(inputString);
System.out.printf("DD: %d%nMM: %d%nYYYY: %n", 
    date.getDayOfMonth(), date.getMonthValue(), date.getYear());
另一答案

你几乎就在那里,但也许不打扰使用循环

String inputString = "15-05-2010"; 
String[] arraySplit_3 = inputString.split("-");
System.out.println("DD: " + arraySplit_3[0]);
System.out.println("MM: " + arraySplit_3[1]);
System.out.println("YYYY: " + arraySplit_3[2]);

但如果你想要更奇特的东西寻找SimpleDateFormat

另一答案

为什么你不解析日期/日历对象?

String input = "15-05-2010";
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
Date date = format.parse(input);
Calendar calendar = Calendar.getInstance() ;
calendar.setTime(date);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH));
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
另一答案

如果你想使用一个循环,我建议你创建分裂值的spearated方法在这里我有一个示例代码

public class licz {
public static void main(String[] args) {

    List<String> list = new ArrayList<String>();
    list.add("15-05-2010");
    list.add("18-02-2015");
    extractValues(list);
}

private static void extractValues(List<String> list) {
    int change = 0;
    for (int i=0; i < list.size(); i++) {
        String[] split = list.get(i).split("-");
        for (String splitElement : split) {
            switch (change) {
                case 0:
                    System.out.println("DD: " + split[0]);
                    change++;
                    break;
                case 1:
                    System.out.println("MM: " + split[1]);
                    change++;
                    break;
                case 2:
                    System.out.println("YYYY: " + split[2]);
                    change=0;
                    break;
            }
        }
    }
}

}

以上是关于Java:从String中提取值?的主要内容,如果未能解决你的问题,请参考以下文章

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

C# 中如何从List集合中提取第一个值

从单个按钮从多个片段中提取数据

Java 8:如何从包含为映射值的列表中获取值?

从值标签Etree XML python中提取文本

从 Dictionary<string, object> 中提取数组值