为了账号安全,请及时绑定邮箱和手机立即绑定

无法通过 java split() 方法从字符串中获取数字

无法通过 java split() 方法从字符串中获取数字

有只小跳蛙 2022-06-15 15:08:39
我有这段代码,它采用格式为 255.255.255.255 的 IP 地址(字符串),需要对这些数字(未在此处发布)执行一些后处理,但必须将字符串转换为整数数组。我在这里使用了该split()方法,但它没有给我结果。我在使用正则表达式的 sp 上看到了其他答案,但没有一个对我有用。import java.util.Scanner;public class Main{    public static void main(String args[]){        String text;        Scanner take=new Scanner(System.in);        text=take.nextLine();        String data[]=text.split(".",4);        for(String w:data){            System.out.println(w);        }        take.close();    }}我试过输入 12.36.26.25但它输出 36.26.25 应该是 12 36 26 25
查看完整描述

4 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

像这样使用它:


        String example="12.36.26.25";

        String data[]=example.split("\\.");


        for(String w:data){

            System.out.println(w);

        }

它会做你想做的;)


像您一样使用 split(regex,limit) 实际上会拆分任何字符(因为 . 是任何字符的正则表达式)并且它基本上会删除前几个字符


查看完整回答
反对 回复 2022-06-15
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

使用java.util.regex包的解决方案:


import java.util.regex.*;

public class Main{


     public static void main(String args[]){

        String text = "12.36.26.25";

        String separator = ".";

        String[] data = text.split(Pattern.quote(separator));

        System.out.println(data.length);

        for(String w: data){

            System.out.println(w);

        }

    }

}

Pattern.quote 将进行转义。


查看完整回答
反对 回复 2022-06-15
?
慕少森

TA贡献2019条经验 获得超9个赞

另一种解决方案是使用sun.net.util.IPAddressUtil从 IPAddress 的给定字符串中提取数字,如下所示 -

String ipAddressString = "10.20.30.40";
byte[] numbers = IPAddressUtil.textToNumericFormatV4(ipAddressString);

使用此解决方案可以将 ByteArray 格式的数字转换为整数数组。


查看完整回答
反对 回复 2022-06-15
?
慕容3067478

TA贡献1773条经验 获得超3个赞

只需更改此行

String data[]=text.split(".",4);

String data[]=text.split("\\.");


查看完整回答
反对 回复 2022-06-15
  • 4 回答
  • 0 关注
  • 235 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信