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

时间:2019-02-12 08:32:37

标签: java array-algorithms

我有此代码,其格式为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

5 个答案:

答案 0 :(得分:11)

像这样使用它:

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

        for(String w:data){
            System.out.println(w);
        }

它将满足您的要求;)

像以前一样使用split(regex,limit)实际上会在任何字符上进行分割(因为。是任何字符的正则表达式),并且基本上会删除前几个字符

答案 1 :(得分:2)

使用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将进行转义。

答案 2 :(得分:0)

让我也为您提供替代解决方案:

public static void main(String args[]){
        String text;

        Scanner take=new Scanner(System.in);
        text=take.nextLine();
        String data[]=text.split("[.]");

        for(String w:data){
            System.out.println(w);
        } 
        take.close();
    }

您可以使用“ [。]”作为字符串对点进行转义,将点从正则表达式运算符转换为文字字符

答案 3 :(得分:0)

只需更改此行

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

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

答案 4 :(得分:0)

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

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

使用此solution,可以将ByteArray格式的数字转换为整数数组。