无法通过 java split() 方法从字符串中获取数字
Unable to fetch numbers from string by java split() method
我有这段代码,它采用格式为 255.255.255.255 的 IP 地址(字符串)
并且需要对这些数字执行一些 post 处理(此处未 posted)但必须将字符串转换为整数数组。
我在这里使用了 split()
方法,但它没有给我结果。
我在 sp 上看到其他答案是用正则表达式做的,但 none 对我有用。
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
这样使用:
String example="12.36.26.25";
String data[]=example.split("\.");
for(String w:data){
System.out.println(w);
}
它会做你想做的事 ;)
像你一样使用 split(regex,limit) 实际上会拆分任何字符(因为 . 是任何字符的正则表达式)并且它基本上会删除前几个字符
使用 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 将进行转义。
我也给大家一个替代方案:
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();
}
您可以使用“[.]”作为字符串对点进行转义,将正则表达式运算符中的点转换为文字字符
只需更改此行
String data[]=text.split(".",4);
至
String data[]=text.split("\.");
另一种解决方案是使用 sun.net.util.IPAddressUtil
从 IP 地址的给定字符串中提取数字,如下所示 -
String ipAddressString = "10.20.30.40";
byte[] numbers = IPAddressUtil.textToNumericFormatV4(ipAddressString);
可以使用此 solution.
将 ByteArray 格式的数字转换为整数数组
我有这段代码,它采用格式为 255.255.255.255 的 IP 地址(字符串) 并且需要对这些数字执行一些 post 处理(此处未 posted)但必须将字符串转换为整数数组。
我在这里使用了 split()
方法,但它没有给我结果。
我在 sp 上看到其他答案是用正则表达式做的,但 none 对我有用。
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
这样使用:
String example="12.36.26.25";
String data[]=example.split("\.");
for(String w:data){
System.out.println(w);
}
它会做你想做的事 ;)
像你一样使用 split(regex,limit) 实际上会拆分任何字符(因为 . 是任何字符的正则表达式)并且它基本上会删除前几个字符
使用 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 将进行转义。
我也给大家一个替代方案:
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();
}
您可以使用“[.]”作为字符串对点进行转义,将正则表达式运算符中的点转换为文字字符
只需更改此行
String data[]=text.split(".",4);
至
String data[]=text.split("\.");
另一种解决方案是使用 sun.net.util.IPAddressUtil
从 IP 地址的给定字符串中提取数字,如下所示 -
String ipAddressString = "10.20.30.40";
byte[] numbers = IPAddressUtil.textToNumericFormatV4(ipAddressString);
可以使用此 solution.
将 ByteArray 格式的数字转换为整数数组