Java:从字符串中提取值?

Java:从字符串中提取值?,java,arrays,string,split,Java,Arrays,String,Split,我是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]); } String inputSt

我是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]);
}
String inputString=“s.param1”;
String[]arraySplit_3=inputString.split(“-”);
for(int i=0;i
s.param1
获取用户的输入,我使用单独的excel文件

如果s.param1=15-05-2010

我希望得到以下输出:

DD:15

MM:05

YYYY:2010


有没有一种方法可以创建这样的方法?

您就快到了,但也许不用麻烦使用循环了

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

为什么不使用pars to date/calendar对象

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

如果
s.param1
是以字符串形式获取日期的变量,则不应在引号中使用它。否则它将是字符串。和变量名不能与点一起使用。它可能是
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]);
}
然后输出为:
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());

如果您想使用循环,我建议您创建分割值的先锋方法,这里有一个示例代码

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;
            }
        }
    }
}
公共类licz{
公共静态void main(字符串[]args){
列表=新的ArrayList();
列表。添加(“15-05-2010”);
列表。添加(“18-02-2015”);
提取值(列表);
}
私有静态值(列表){
int change=0;
对于(int i=0;i

}

我运行了你的代码,当我用
s.param1
替换
15-05-2010
时,我得到了2010年5月15日。看起来工作正常,有什么问题吗?这里DD是字符串变量或您希望显示为输出的东西?您可以尝试浏览java SimpleDataFormat的文档。或者,您也可以使用substring手动提取不同的部分,如果
s.param1
是变量,则不应在引号中使用它。否则它将是字符串。但是,当您设置日期而不是
s.param1
时,您创建的方法应该可以工作。的可能重复项不建议再使用
java.util.date
java.time.LocalDate
在各个方面都更好(几乎?)。是的,s.param1是一个变量。我犯了一个错误,在上面加了双引号。“你的方法对我非常有效。”尼克查,很高兴我能帮助你。
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;
            }
        }
    }
}