Невозможно извлечь числа из строки методом java split()
У меня есть этот код, который принимает IP-адрес (строку) в формате 255.255.255.255 и должен выполнить некоторую постобработку этих чисел (здесь не опубликовано), но для которых строка должна быть преобразована в массив целых чисел.
Я использовал здесь 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 ответов
Используйте это так:
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);
Числа в формате ByteArray могут быть преобразованы в целочисленный массив с использованием этого решения.