android java 数据转型

我有一部分String 数据格式是这样的

{value=加大 +$5},{value=加加大 +$10},{value=加加加大 +$15}

我想把

加大、加加大、加加加大 存进去 Arraylist name.

$5、$10、$15 存进去 Arraylist price.

请教大神们如何实现这种数据转型?

阅读 2.7k
2 个回答

可以用正则表达式

class Untitled {
    public static void main(String[] args) {
        String target = "{value=加大 +$5},{value=加加大 +$10},{value=加加加大 +$15}";
        String valueRegex = "[\\u4e00-\\u9fa5]+";//匹配汉字
        String numberRegex = "\\$\\d+";//匹配"$数字"
        Pattern pattern = Pattern.compile(valueRegex);   
        Matcher m = pattern.matcher(target);
        List<String> valueResult = new ArrayList<>();
        while(m.find()){
            valueResult.add(m.group());
        }
        pattern = Pattern.compile(numberRegex);   
        m = pattern.matcher(target);
        List<String> numberResult = new ArrayList<>();
        while(m.find()){
            numberResult.add(m.group());
        }
        System.out.println(valueResult);
        System.out.println(numberResult);
    }
}

输出结果

[加大, 加加大, 加加加大]
[$5, $10, $15]
public class test {

    public static void main(String[] args) {
        String str = "{value=加大 +$5},{value=加加大 +$10},{value=加加加大 +$15}";
        test(str);
    }

    public static void test(String str) {
        List<String> name = new ArrayList<>();
        List<String> price = new ArrayList<>();
        String[] data = str.split(",");
        for (int i = 0; i < data.length; i++) {
            String temp = data[i];
            temp = temp.substring(1, temp.length() - 1);
            temp = temp.substring(temp.indexOf("value=") + "value=".length());
            String[] subs = temp.split("\\+");
            name.add(subs[0]);
            price.add(subs[1]);
        }
        System.out.println("name: " + name);
        System.out.println("price: " + price);
    }
}

输出:
name: [加大 , 加加大 , 加加加大 ]
price: [$5, $10, $15]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题