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

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

文本未正確拆分

文本未正確拆分

神不在的星期二 2023-06-08 20:04:16
我正在嘗試從字符串中提取文本和十六進制顏色。目前符號“>”有一個小問題這是我目前得到的代碼;package main.cache;import java.util.Arrays;import java.util.regex.Pattern;public class Main {    public static void extract(String string) {         final String STARTS_WITH_COLOR_LITERAL = "^[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3}";        final Pattern pattern = Pattern.compile(STARTS_WITH_COLOR_LITERAL);        Object[] objects = Arrays.stream(string.split("<col=")).filter(part -> pattern.matcher(part).find()).toArray();        String name;        String color = null;        for (int i = 0; i < objects.length; i++) {            String[] line = objects[i].toString().split(">");            if (line.length == 1) {                name = line[0];            } else {                color = line[0];                name = line[1];            }            System.out.println("Color " + color + ", name " + name);        }    }    public static void main(String[] args) {        extract("something before<col=ff00ff>mercides> car<col=ffff00>plates");    }}例如傳遞這個參數時,輸出應該是Color null, name something beforeColor ff00ff, name mercides> carColor ffff00, name plates我目前得到的輸出是Color null, name something beforeColor ff00ff, name mercidesColor ffff00, name plates
查看完整描述

1 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

如果您正在尋找對color/name(按此順序),您可以使用:(?><col=(?<color>[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})>)?(?<text>(?><.*?>)?[^<]+)


static void extract(String string) {

? ? Pattern pattern =

? ? ? ? ? ? Pattern.compile("(?><col=(?<color>[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})>)?(?<name>(?><.*?>)?[^<]+)");

? ? Matcher m = pattern.matcher(string);

? ? while (m.find()) {

? ? ? ? String color = m.group("color");

? ? ? ? String name = m.group("name");

? ? ? ? System.out.printf("Color %s, name %s\n", color, name);

? ? }

}

/*

Color null, name something before

Color ff00ff, name mercides> car

Color ffff00, name plates

  1. (?><col=(?<color>[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})>)?是顏色,以六字符開始<col和結束,它是可選的,所以最后有一個>?

  2. (?<text>(?><.*?>)?[^<]+)名稱組,可以有另一個應答器,但最后一個字符可以是<


查看完整回答
反對 回復 2023-06-08
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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