亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在單個拆分中標記帶有和不帶有分隔符的字符串

如何在單個拆分中標記帶有和不帶有分隔符的字符串

喵喔喔 2021-10-27 10:36:13
假設我有一個字符串內容如下Input:  FTX+AAA+++201707141009UTC'  FTX+BBB+++201707141009UTC'  FTX+CCC+++201707141009UTC?:??'  PISCO US LTS;?:V.D??'    SOUZA?:GB?:GB'  FTX+ZZZ+++201707141009UTC'Expected Output:  Number of segments: 4Input:  FTX+AAA+++201707141009UTC'  FTX+CCC+++201707141009UTC?:??'  PISCO US LTS;?:V.D??'    FTX+ZZZ+++201707141009UTC'Expected Output:  Number of segments: 3基本上,當分隔符 ' 帶有問號時,我想將其視為同一行。行分隔符是 '如何標記并獲取 Java 中的段數???
查看完整描述

3 回答

?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

您可以在正則表達式中使用負回顧:


String input = "FTX+AAA+++201707141009UTC'\n"

    + "  FTX+BBB+++201707141009UTC'\n"

    + "  FTX+CCC+++201707141009UTC?:??'\n"

    + "  PISCO US LTS;?:V.D??'  \n"

    + "  SOUZA?:GB?:GB'\n"

    + "  FTX+ZZZ+++201707141009UTC'";


String[] tokens = input.split("(?<!\\?)'\\s*");

System.out.println(tokens.length);

4


但是,在第二個示例中,我希望有兩個部分,而不是三個...


查看完整回答
反對 回復 2021-10-27
?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

我想他/她想要的是:


String a = "FTX+AAA+++201707141009UTC'"

        + "FTX+BBB+++201707141009UTC'"

        + "FTX+CCC+++201707141009UTC?:??'"

        + "PISCO US LTS;?:V.D??'  "

        + "SOUZA?:GB?:GB'"

        + "FTX+ZZZ+++201707141009UTC'";

String result[] = a.split("'");

List<String> stringList = new ArrayList<String>(Arrays.asList(result));

for (int i = 0; i < stringList.size(); i++) {

    if (!stringList.get(i).startsWith("FTX") && i != 0) {

        stringList.set(i-1, stringList.get(i-1) + stringList.get(i));

        stringList.remove(i);

        i--;

    }

}

for (int j = 0; j < stringList.size(); j++) {

    System.out.println(stringList.get(j));

}

FTX+AAA+++201707141009UTC

FTX+BBB+++201707141009UTC

FTX+CCC+++201707141009UTC?:??PISCO US LTS;?:VD?? SOUZA?:GB?:GB

FTX+ZZZ+++201707141009UTC


查看完整回答
反對 回復 2021-10-27
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

上面的另一種選擇 - 但再次證明您發布的第二個示例可能是錯誤的,因為第三行以 a 結尾?',根據您的定義不應該是中斷。


public void test() {

    test("FTX+AAA+++201707141009UTC'" +

            "FTX+BBB+++201707141009UTC'" +

            "FTX+CCC+++201707141009UTC?:??'" +

            "PISCO US LTS;?:V.D??'" +

            "SOUZA?:GB?:GB'" +

            "FTX+ZZZ+++201707141009UTC'");

    test("FTX+AAA+++201707141009UTC'" +

            "FTX+CCC+++201707141009UTC?:??'" +

            "PISCO US LTS;?:V.D??'" +

            "FTX+ZZZ+++201707141009UTC'");

}


private void test(String s) {

    String[] split = s.split("(?<!\\?)'");

    System.out.println(split.length+"->"+Arrays.toString(split));

}

印刷


4->[FTX+AAA+++201707141009UTC, FTX+BBB+++201707141009UTC, FTX+CCC+++201707141009UTC?:??'PISCO US LTS;?:VD??'SOUZA?:GB?:GB, FTX+ZZZ+++201707141009UTC]


2->[FTX+AAA+++201707141009UTC, FTX+CCC+++201707141009UTC?:??'PISCO US LTS;?:VD??'FTX+ZZZ+++201707141009UTC]


查看完整回答
反對 回復 2021-10-27
  • 3 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號