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

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

如何解析僅包含數組列表部分需要的值的字符串?

如何解析僅包含數組列表部分需要的值的字符串?

POPMUISE 2023-06-14 16:38:04
我有一個看起來像這樣的字符串:String a = "name:string, age:int, address:string,city:string, zip:int";字符串由,and分隔,:它之間是fieldNameand type。每個值之間可能有空格,但應忽略任何空格。我想要的是將這個字符串轉換成一個只有 contents 的 arrayList fieldName。所以上面的例子會變成List<String> result = new ArrayList<>;結果中應該有 的值name, age, address, city, zip。其他一切都應該被忽略。我如何使用 Java 中的正則表達式執行此操作?我可以通過首先執行拆分然后將,字符串數組拆分:,然后將數組的第一個元素添加到列表中來實現這一點。我問的原因是因為我想知道是否有更優雅的方法來使用正則表達式來做到這一點。
查看完整描述

2 回答

?
蠱毒傳說

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

String[] b = a.split(":[^,]+(?:, *)?");

或者:

String[] b = Pattern.compile("[^, ]+(?=:)").matcher(a).results()
                    .map(r -> r.group()).toArray(String[]::new);


查看完整回答
反對 回復 2023-06-14
?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

以下正則表達式將為您提供所需的結果

[a-z]+[^,?](?=:)

第一個括號稱為向前看,因此將選擇 : 之前的任何內容,第一組括號表示我們需要任何字符 az(注意這些區分大小寫,因此如果可以使用大寫,請添加 +[AZ]),最后一組括號表示不,或空格

要在 Java 中使用它,您需要按照以下方式編寫一些內容

Pattern.compile("[a-z]+[^,?](?=:)")
???????.matcher(a)
???????.find();
查看完整回答
反對 回復 2023-06-14
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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