【问题标题】:How to handle unexpected blank space when splitting String by blank space in Java在Java中用空格分割字符串时如何处理意外的空格
【发布时间】:2020-06-17 04:05:14
【问题描述】:

我正在逐行提取文件,每一行都有不同数量的空格分隔字符串,如下所示。这是文件中的单行。代码按预期工作,除了这一行存在意外空间的情况,如埃尔帕索:EL PASO*TX*K4。如果每行有固定数量的字符串但没有,我会为每个字符串使用定义的索引。有些行只有 7 个字符串,而其他行则有多达 21 个要提取的字符串。任何人都知道如何最好地处理这种情况?

NAV3ELP VORTAC ALIBY*NM*K2 ANJIE*TX*K4 CINAG*TX*K4 EL PASO*TX*K4 FABAN*TX*K4 FANNY*TX*K4 FARCY*TX*K4 FEMOL*TX*K4 FIGMO*TX*K4 GIFEN*TX*K4 GREBE*NM*K2 HANCH*NM*K2 JIDEN*TX*K4 KEYLO*TX*K4 LINZY*TX*K4 NOCIG*TX*K4 NUQUH*TX*K4 PIERS*TX*K4 RIOWE*TX*K4 RISGE*TX*K4 RUTER*NM*K2

    public Nav3Data parseRecord(String dataLine) {
        // check record type
        if(!dataLine.startsWith("NAV3")) return null;

        Nav3Data theNav = new Nav3Data();
        // parse Navaid ID
        theNav.setNavaidID(dataLine.substring(NAVAID_ID_START_IDX, NAVAID_ID_END_IDX).trim());
        // parse fixes
        String[] fixes = dataLine.substring(FIX_IDS_START_IDX, FIX_IDS_END_IDX).split("\\s+"); 
        theNav.setFixIDs(fixes);
        return theNav;
    }

【问题讨论】:

    标签: java string substring whitespace delimiter


    【解决方案1】:

    拆分为 2 个或更多空格:

    dataLine.substring(FIX_IDS_START_IDX, FIX_IDS_END_IDX).split("\\s{2,}")
    

    【讨论】:

      【解决方案2】:

      两个选项: a) 分割多个空格字符 b) 如果节之间的空白是已知的且恒定的,则根据该值显式拆分。

      【讨论】:

      • 多个空格字符是我所追求的解决方案,但不熟悉这样做的语法。谢谢!
      猜你喜欢
      • 2021-11-19
      • 2012-09-22
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 2017-04-25
      • 2014-12-13
      相关资源
      最近更新 更多