我有此代码,其格式为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
答案 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格式的数字转换为整数数组。