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