首页 > 解决方案 > Java字符串索引让我感到困惑

问题描述

所以我需要从我的数据库中收集数据,这是我国家的假期日期,数据是这样的

Example 1 : THU     21    May     Ascension Day of Jesus Christ        *ICDX GOLD open for
Example 2 : MON-THU 28-31 Dec     Substitute for Commemoration of Idul Fitri Festival

所以我需要从日期、日期和假期名称中获取数据,为了从示例 1 中获取数据,我正在使用这样的代码

public static void main(String[] args) {
    String ex1 = "THU     21    May     Ascension Day of Jesus Christ        *ICDX GOLD open for";
    String ex2 = "MON-THU 28-31 Dec     Substitute for Commemoration of Idul Fitri Festival       ";
    String[] trim1 = ex1.trim().split("\\s+"); //to split by space
    String[] trim2 = ex1.trim().split("   "); //to split by 3 space so i got the data from multiple space as delimiter

    System.out.println("DAY " +trim1[0]);//display day
    System.out.println("DATE " +trim1[1] +trim1[2]+"2020");//display date
    System.out.println("HOLIDAY NAME " +trim2[3]);//dispay holiday name

}

输出是这样的

DAY MON DATE 21May2020 HOLIDAY NAME Ascension Day of Jesus Christ

就像我需要的一样,但是当谈到示例 2 时,我不能使用相同的代码,因为空间不同,如何使用示例 1 和 2 使用相同的代码获取我需要的数据。

我是java新手,所以如果我的问题看起来很愚蠢,我很抱歉,我希望你能帮助我。谢谢

标签: java

解决方案


.split("\\s+")将在任何空间分割,包括多个空间。例如。它将拆分为 1 个或更多空间。

这意味着您可以拆分任意数量的空间(您想要的)。但是,这也会拆分您的文本评论。您可以使用 .split(regex, n) 限制生成的数组的长度(拆分的次数),这将导致最多 n-1 大小的数组。有关更多详细信息,请参阅此

至于拆分您的两个文字评论,我看不到这样做的方法。

Substitute for Commemoration of Idul Fitri Festival ";无法分辨第一个文本注释和第二个文本注释是什么。

对我来说,您从数据库中收到这样的信息似乎很奇怪,我建议您看看是否有其他选项可以这样做。几乎可以肯定有一种方法可以获得单独的字段。

如果能够更改数据库中的所有信息,您可以添加单引号 (') 或其他一些分隔符,然后您就可以将两段文本分开。


推荐阅读