java怎么将字符串"【姓名:我是人,电话:15073123123】"解析出姓名和手机号码?

新手上路,请多包涵

一般的思路就是用","和":"分割然后用数组解析。
已知我们可以利用String.format,然后用占位符的形式拼接字符串,那可不可以反过来,给一个已解析的字符串和一个模板,解析出占位符的内容。

阅读 3k
3 个回答

利用正则捕获组,正则:

【.*[::](.+)[,,].*[::][^\d]*([\d]{11}).*】

以JAVA为例
使用UP主的【姓名:我是人,电话:15073123123】匹配

        String test = "【  姓  名:我是人,  电话: 15073123123 】";
        String reg = "【.*[::](.+)[,,].*[::][^\\d]*([\\d]{11}).*】";
        Pattern r = Pattern.compile(reg);
        Matcher m = r.matcher(test);
        if (m.find( )) {
            System.out.println("Found value: " + m.group(0) );
            System.out.println("Found value: " + m.group(1) );
            System.out.println("Found value: " + m.group(2) );
        } else {
            System.out.println("NO MATCH");
        }

得到结果:

Found value: 【  姓  名:我是人,  电话: 15073123123 】
Found value: 我是人
Found value: 15073123123

以上正则仅给题主一个思路,要正式使用还是得经过测试才行。

姓名:(.+),电话:(\d+)

  1. group 1 姓名
  2. group 2 电话
那可不可以反过来,给一个已解析的字符串和一个模板,解析出占位符的内容。

这个模板就叫正则表达式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题