gpt4 book ai didi

java - 返回值并打印在正确的位置

转载 作者:太空宇宙 更新时间:2023-11-04 12:27:52 25 4
gpt4 key购买 nike

我有 2 个模式,每个模式都会将数字转换为单词并返回它们的值。如何获取值并将其打印在正确的位置?

我创建了这个replaceIfNeeded()方法:

public static String replaceIfNeeded(String value){

String patternDate = "\\d{1,2}/\\d{1,2}/\\d{4}"; // dd/mm/yyyy @ d/m/yyyy
String patternTime = "\\d{1,2}:\\d{1,2}"; // hh:mm (time)

Pattern date_pattern = Pattern.compile(patternDate);
Matcher date_matcher = date_pattern.matcher(value);

Pattern time_pattern = Pattern.compile(patternTime);
Matcher time_matcher = time_pattern.matcher(value);

if (date_matcher.find()) { // find date pattern
String get_date = date_matcher.group();
String parts[] = get_date.split("/"); // split process
String get_day = parts[0]; //store day in first array
String get_month = parts[1]; //store month in second array
String get_year = parts[2]; //store year in third array

String s = NumberConvert.convert(Integer.parseInt(get_day)) + " of" +
NumberConvert.convert(Integer.parseInt(get_month)) +
NumberConvert.convert(Integer.parseInt(get_year));

value = date_matcher.replaceFirst(s); //replace number to words in variable value
}

else if (time_matcher.find()) { // find time pattern
String get_time = time_matcher.group();
String parts[] = get_time.split(":"); // split process
String get_hour = parts[0]; //store hour in first array
String get_minute = parts[1]; // store minute in second array

String s = NumberConvert.convert(Integer.parseInt(get_hour)) + " and " +
NumberConvert.convert(Integer.parseInt(get_minute)) + " minutes ";

value = time_matcher.replaceFirst(s); // replace number to words in variable value
}
return value; // return value

}

主要方法在这里:

public static void main(String[] args) {

Scanner reader = new Scanner(System.in);
System.out.println("Enter your text here: ");
String text = reader.nextLine();

// remove any space between "/"
String data = text.replaceAll("\\s+/", "/").replaceAll("/\\s+", "/");
String result = replaceIfNeeded(data);
System.out.println(result);

用户输入:

My birth of date is 12/12/2003 and time at 23:12.

结果:

My birth of date is 12/12/2003 and time at twenty three twelve minute.

日期模式没有返回值。请指导我。我想返回值并将其打印在正确的位置。用户可以输入 1 个以上的日期和时间。

最佳答案

replaceIfNeeded() 方法有两个问题:

如果未找到日期模式,它仅检查时间模式(删除 else 语句)。

第二个匹配器必须使用编辑后的值进行初始化。

试试这个功能:

public static String replaceIfNeeded(String value){

String patternDate = "\\d{1,2}/\\d{1,2}/\\d{4}"; // dd/mm/yyyy @ d/m/yyyy
String patternTime = "\\d{1,2}:\\d{1,2}"; // hh:mm (time)

Pattern date_pattern = Pattern.compile(patternDate);
Matcher date_matcher = date_pattern.matcher(value);

if (date_matcher.find()) { // find date pattern
String get_date = date_matcher.group();
String parts[] = get_date.split("/"); // split process
String get_day = parts[0]; //store day in first array
String get_month = parts[1]; //store month in second array
String get_year = parts[2]; //store year in third array

String s = NumberConvert.convert(Integer.parseInt(get_day)) + " of" +
NumberConvert.convert(Integer.parseInt(get_month)) +
NumberConvert.convert(Integer.parseInt(get_year));

value = date_matcher.replaceFirst(s); //replace number to words in variable value
}

// "else" removed and time_matcher initialized with the edited value
Pattern time_pattern = Pattern.compile(patternTime);
Matcher time_matcher = time_pattern.matcher(value);
if (time_matcher.find()) { // find time pattern
String get_time = time_matcher.group();
String parts[] = get_time.split(":"); // split process
String get_hour = parts[0]; //store hour in first array
String get_minute = parts[1]; // store minute in second array

String s = NumberConvert.convert(Integer.parseInt(get_hour)) + " and " +
NumberConvert.convert(Integer.parseInt(get_minute)) + " minutes ";

value = time_matcher.replaceFirst(s); // replace number to words in variable value
}
return value; // return value

}

关于java - 返回值并打印在正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38180359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com