Java取出字符串的年份

在Java编程中,经常会遇到需要从字符串中提取出特定信息的情况。其中,从字符串中获取年份是一个常见的需求。本文将介绍如何使用Java代码从字符串中提取出年份。

1. 使用正则表达式提取年份

使用正则表达式是一种常见的方法来从字符串中提取出特定模式的内容。对于年份,我们可以使用正则表达式\d{4}来匹配四位数字,即表示年份的格式。以下是一个示例代码,演示了如何使用正则表达式提取出字符串中的年份。

import java.util.regex.*;

public class YearExtractor {
    public static void main(String[] args) {
        String str = "本文发布于2022年10月";
        Pattern pattern = Pattern.compile("\\d{4}");
        Matcher matcher = pattern.matcher(str);
        if (matcher.find()) {
            String year = matcher.group();
            System.out.println("提取到的年份为:" + year);
        } else {
            System.out.println("未找到年份");
        }
    }
}

在上述代码中,我们使用PatternMatcher类来进行正则表达式的匹配。首先,我们定义了一个正则表达式模式\d{4},其中\d表示匹配任意数字,{4}表示需要匹配连续出现4次的数字。然后,我们将这个正则表达式模式编译成Pattern对象。接下来,我们使用Matcher对象对输入字符串进行匹配,并通过find()方法找到匹配的结果。如果找到了匹配的结果,我们使用group()方法获取匹配到的内容,并将其打印输出。

运行上述代码,输出结果为:

提取到的年份为:2022

2. 使用字符串切割提取年份

除了使用正则表达式,还可以使用字符串的切割方法来提取出特定的内容。对于年份,我们可以使用字符串的split()方法来切割字符串,并获取到年份部分。以下是一个示例代码,演示了如何使用字符串切割提取出字符串中的年份。

public class YearExtractor {
    public static void main(String[] args) {
        String str = "本文发布于2022年10月";
        String[] parts = str.split("年");
        if (parts.length >= 1) {
            String year = parts[0];
            System.out.println("提取到的年份为:" + year);
        } else {
            System.out.println("未找到年份");
        }
    }
}

在上述代码中,我们使用字符串的split()方法将输入字符串按照"年"进行切割,得到一个字符串数组parts。我们可以通过访问数组的第一个元素来获取到年份部分。如果切割后的数组长度小于1,说明没有找到年份。否则,我们将获取到的年份部分打印输出。

运行上述代码,输出结果为:

提取到的年份为:2022

序列图

下面是一个使用SequenceDiagram标识的序列图,展示了上述两种方法的执行过程。

sequenceDiagram
    participant JavaCode as Java代码
    participant String as 字符串
    participant Pattern as 正则表达式
    participant Matcher as 匹配器
    participant Year as 年份
    participant Parts as 切割后的字符串数组
    
    JavaCode ->> String: 定义字符串 str
    JavaCode ->> Pattern: 定义正则表达式模式
    JavaCode ->> Matcher: 编译正则表达式模式
    String ->> Matcher: 调用Matcher对象的find()方法
    Matcher -->> JavaCode: 返回匹配结果
    loop 匹配成功
        Matcher ->> Year: 调用group()方法
        Year -->> JavaCode: 返回年份
    end
    JavaCode ->> String: 定义字符串 str
    String ->> Parts: 调用split("年")方法
    Parts -->> JavaCode: 返回切割后的数组
    alt 切割成功
        Parts ->> Year: 访问第一个元素
        Year -->> JavaCode: 返回年份
    else 切割失败
        JavaCode ->> JavaCode: 输出未