Java 将IP:端口字符串格式化为

Java 将IP:端口字符串格式化为,java,string,ip,port,Java,String,Ip,Port,我正在尝试制作一个小的聊天程序来进行实验,但鉴于我不是最好的Java程序员,我不知道如何将端口与IP分离,因为它们都在同一个字符串中 这不是很清楚,但基本上我想做的就是这样。 用户以IP:port格式输入IP和端口 扫描器将其抓取并放入字符串中 不知何故,将冒号之前的所有内容放入字符串,将冒号之后的所有数字放入int 有什么办法吗?首先,您应该检查字符串是否包含冒号。然后,你可以使用和,比如 public static void main(String args[]){ Stri

我正在尝试制作一个小的聊天程序来进行实验,但鉴于我不是最好的Java程序员,我不知道如何将端口与IP分离,因为它们都在同一个字符串中

这不是很清楚,但基本上我想做的就是这样。 用户以IP:port格式输入IP和端口 扫描器将其抓取并放入字符串中 不知何故,将冒号之前的所有内容放入字符串,将冒号之后的所有数字放入int


有什么办法吗?

首先,您应该检查
字符串是否包含冒号。然后,你可以使用和,比如

public static void main(String args[]){
        String allTogether= "ip:port";
        String[] array;

        if(allTogether.contains(":")){
            array = allTogether.split(":");
            String ip = array[0];
            String port = array[1];

            System.out.println(ip);
            System.out.println(port);
        }
    }
String input = "127.0.0.1:8080"; // <-- an example input
int port = 80; // <-- a default port.
String host = null;
if (input.indexOf(':') > -1) { // <-- does it contain ":"?
  String[] arr = input.split(":");
  host = arr[0];
  try {
    port = Integer.parseInt(arr[1]);
  } catch (NumberFormatException e) {
    e.printStackTrace();
  }
} else {
  host = input;
}
System.out.printf("host = %s, port = %d%n", host, port);

首先,您应该检查
字符串
是否包含冒号。然后,你可以使用和,比如

String input = "127.0.0.1:8080"; // <-- an example input
int port = 80; // <-- a default port.
String host = null;
if (input.indexOf(':') > -1) { // <-- does it contain ":"?
  String[] arr = input.split(":");
  host = arr[0];
  try {
    port = Integer.parseInt(arr[1]);
  } catch (NumberFormatException e) {
    e.printStackTrace();
  }
} else {
  host = input;
}
System.out.printf("host = %s, port = %d%n", host, port);
使用
字符串中的IP=splittedIP[0],Port=splittedIP[1] 您需要获取端口的整数值

String[] ipSplit = "127.0.0.1:80".split(":");
String ip = ipSplit[0];
int port = Integer.parseInt(ipSplit[1]);
使用
字符串中的IP=splittedIP[0],Port=splittedIP[1] 您需要获取端口的整数值

String[] ipSplit = "127.0.0.1:80".split(":");
String ip = ipSplit[0];
int port = Integer.parseInt(ipSplit[1]);
在这种情况下,
地址
将是
“127.0.0.1”
端口
将是
int
999

请注意,在这种情况下,
Integer.parseInt
将抛出一个
NumberFormatException
,如果
后面的字符串部分无法解析为整数,如
“127.0.0.1:blahblah”
中所述。同样,如果字符串不包含
,则不会有
部分[1]

在这种情况下,
地址
将是
“127.0.0.1”
端口
将是
int
999


请注意,在这种情况下,
Integer.parseInt
将抛出一个
NumberFormatException
,如果
后面的字符串部分无法解析为整数,如
“127.0.0.1:blahblah”
中所述。同样,如果字符串不包含
,则不会有
部分[1]

您可以使用java中的模式匹配器来获取地址和端口信息,并且还可以验证输入字符串

Pattern pattern = Pattern.compile(REGEX_FOR_IPADDRESS_WITH_PORT);
Matcher matcher = pattern.matcher("127.0.0.1:80");
if (matcher.matches()) {
    System.out.printf("host = %s, port = %s%n", matcher.group(1), matcher.group(2));
} else {
    System.out.println("Invalid Ip Address");
}
您可以使用多个正则表达式来验证V4和V6地址。
希望这会有所帮助。

您可以使用java中的模式匹配器来获取地址和端口信息,并且还可以验证输入字符串

Pattern pattern = Pattern.compile(REGEX_FOR_IPADDRESS_WITH_PORT);
Matcher matcher = pattern.matcher("127.0.0.1:80");
if (matcher.matches()) {
    System.out.printf("host = %s, port = %s%n", matcher.group(1), matcher.group(2));
} else {
    System.out.println("Invalid Ip Address");
}
您可以使用多个正则表达式来验证V4和V6地址。
希望这会有所帮助。

要验证IP:PORT格式,您可以尝试以下方法:

public class Validator {

    private static final String IP_PORT_PATTERN =
            "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                    "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                    "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                    "([01]?\\d\\d?|2[0-4]\\d|25[0-5]):" +
                    "([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$";

    private static final Pattern PATTERN;

    static {
        PATTERN = Pattern.compile(IP_PORT_PATTERN);
    }

    public static boolean validate(final String s) {
        return PATTERN.matcher(s).matches();
    }

}
感谢和:)

并将ip和端口分开:

public static void main(String args[]) {
    String s = "127.0.0.1:8080";
    if (validate(s)) {
        String ip = s.substring(0, s.indexOf(':'));
        int port = Integer.parseInt(s.substring(s.indexOf(':') + 1));
        System.out.println(ip);
        System.out.println(port);
    } else {
        System.out.println("invalid format");
    }
}

要验证IP:端口格式,您可以尝试以下操作:

public class Validator {

    private static final String IP_PORT_PATTERN =
            "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                    "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                    "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
                    "([01]?\\d\\d?|2[0-4]\\d|25[0-5]):" +
                    "([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$";

    private static final Pattern PATTERN;

    static {
        PATTERN = Pattern.compile(IP_PORT_PATTERN);
    }

    public static boolean validate(final String s) {
        return PATTERN.matcher(s).matches();
    }

}
感谢和:)

并将ip和端口分开:

public static void main(String args[]) {
    String s = "127.0.0.1:8080";
    if (validate(s)) {
        String ip = s.substring(0, s.indexOf(':'));
        int port = Integer.parseInt(s.substring(s.indexOf(':') + 1));
        System.out.println(ip);
        System.out.println(port);
    } else {
        System.out.println("invalid format");
    }
}

如果可以假设输入的格式为IP:Port,则可以使用String类的
split()
方法在
上进行拆分。这将返回一个包含两个元素的数组,第一个包含IP,第二个包含PortI。我将对此进行一些搜索,谢谢:)如果您可以假设输入的格式为IP:Port,则可以使用String类的
split()
方法在
上进行拆分。这将返回一个包含两个元素的数组,第一个包含IP,第二个包含PortI。我会在上面搜索一下,谢谢:)