java提取字符串中需要的数据

本文介绍了一种从用户输入的自由文本中提取特定商品名称的方法,通过使用Java的集合和流API,实现了对商品名称的有效识别。同时,文章还分享了如何利用正则表达式匹配手机号码的技术细节。

最近做了个项目需要从一段字符串中提取出关键的信息,并拿出来使用。相当于张三进了一个无人超市对机器人说:帮我拿一瓶可口可乐,谢谢!!! 这句话有很多种说法,又比如:给我来一瓶可乐,但不管张三怎么说可乐这个商品是不会变得,如果变了,就又变成买别的东西了。所以我们要抓住可乐这个重要的元素,把这个元素提取出来,让机器人去拿和计算价格。

下面就开始做正事了

1.首先要先创建一个集合,把商品放入集合里面,考虑到商品名称是不会重复的,所以使用set集合

 //商品集合
    private static final Set<String> shopType = Stream.of(
            "可乐", "雪碧", "百岁山", "农夫山泉", "冰红茶", "绿茶", "芬达", "脉动",
            "王老吉", "今麦郎", "哇哈哈"
    ).collect(Collectors.toSet());

2.现在集合已经创建完成了,接下来就要通过这个集合去对比用户说的话 看看有没有用户说的商品,如果有就把商品的名称给提取出来并返回

    //判断用户说的商品是否存在
    private static Set<String> getShoesType (String message){
        Set<String> clothesTypeSet = shopType.stream()
                .filter(clothesType -> message.contains(clothesType)).collect(Collectors.toSet());
        return clothesTypeSet;
    }

3.最后一步,在方法中调用

public static void main(String[] args) {
        String me = "我想买瓶百岁山";
        Set shopName = getShoesType(me);
        System.out.println(shopName);
        String mes = "我想买瓶";
        Set shopNames = getShoesType(mes);
        System.out.println(shopNames);
    }

4.执行方法后控制台显示如下
在这里插入图片描述

使用正则表达式匹配手机号

1、写一个匹配手机号的方法

    public static String getPhone(String remark){
        Pattern pattern = Pattern.compile("((13[0-9])|(14[5-9])|(15([0-3]|[5-9]))|(16[6-7])|(17[1-8])|(18[0-9])|(19[1|3])|(19[5|6])|(19[8|9]))\\d{8}");
        Matcher matcher = pattern.matcher(remark);
        //匹配到的所有手机号,取第一条
        if (matcher.find()) {
            return matcher.group();
        }
        //匹配所有手机号,保存在数组中,可根据数组下标选择
        List list = new ArrayList();
        while (matcher.find()) {
            list.add(matcher.group());
        }
        System.out.println(list);
        return null;
    }

2、单元测试

public static void main(String[] args) {
      String str1 = "阿斯顿19167876787撒旦阿斯顿18767876787撒旦22";
      String phone = getPhone(str1);
      System.out.println(phone);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值