java获得一个String字符串中第一个数字的下标,并截取后面的6位和前面的地区

发布于 2022-09-04 13:30:05 字数 563 浏览 13 评论 0

小白一只,现在的环境是这样的:
一个String类型的变量"杭州20170222ax"或者是"乌鲁木齐20170222拉拉"
我想拿到201702,总之从左往右开始得到第一个数字,在往右截6位(substring),关键是怎么得到第一个数字的下标?我现在想拿第一个数字的位置!!因为我可能要获取全地区的名字

String str="宁波20170222呵呵22";
        String regEx="\\D";
        Pattern p=Pattern.compile(regEx);
        Matcher m=p.matcher(str);
        String result=m.replaceAll("").trim();
        Character ch=result.charAt(0);
        int index=str.indexOf(ch);
        String diqu=str.substring(0,index);
        String riqi=str.substring(index,index+6);
        
  感觉代码好长有短点的吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

悲念泪 2022-09-11 13:30:05
String s = "杭州20170222ax";
Pattern p = Pattern.compile("([0-9].{5,5})");
Matcher m = p.matcher(s);
m.find();
System.out.println(m.group(1));
吃不饱 2022-09-11 13:30:05

遍历字符串,str.charAt(i)>=48 && str.charAt(i)<=57判断数字,第一个符合要求的,就是下标

瞎闹 2022-09-11 13:30:05
System.out.println( new Scanner("宁波20170222呵呵22").useDelimiter("\\D+").nextInt());
初见终念 2022-09-11 13:30:05
String s = "杭州20170222ax";
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
    if (Character.isDigit(chars[i])) {
        System.out.println(s.substring(i, i + 6));
        break;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文