【问题标题】:How i can divide the string with IP and ports?如何用 IP 和端口划分字符串?
【发布时间】:2019-10-29 02:32:35
【问题描述】:

我有这样一行:

176.32.37.27:777754.38.156.202:777751.68.208.5:7777

如何使用 split 函数或类似函数从这串 IP 端口推断出循环?为此:

176.32.37.27:7777 54.38.156.202:7777 51.68.208.5:7777

端口相同只是因为它们有 4 位数字

【问题讨论】:

  • 开始的东西:"176.32.37.27:777754.38.156.202:777751.68.208.5:7777".split("(?<=:\\d{4})") ==> String[3] { "176.32.37.27:7777", "54.38.156.202:7777", "51.68.208.5:7777" }

标签: java string split substring


【解决方案1】:

由于您知道端口的长度将始终为 4,因此您可以根据采用冒号和 4 位数字的后向进行拆分:

String test = "176.32.37.27:777754.38.156.202:777751.68.208.5:7777";
System.out.println(
   Arrays.toString(
       test.split("(?<=:\\d{4})")
   )
);

输出

[176.32.37.27:7777, 54.38.156.202:7777, 51.68.208.5:7777]

另请参阅

在 Java 模式 API 中向后看。

【讨论】:

  • 谢谢!但是当我想从数组中获取第一个值时,会弹出 Array type expected 错误;找到:'java.lang.Stringэ.我为变量“arrayServers”声明了一个类,但没有任何改变String arrayServers = Arrays.toString(getServers.get().split("(?&lt;=:\\d{4})")); Log.i(LOG_TAG,""+arrayServers['0']);
  • 在我的示例中,Arrays.toString 仅将数组转换为其 String 表示形式,以便于打印。您不能通过数组索引访问 String 部分。 TL;DR 你只需要:String[] arrayServers = getServers.get().split("(?&lt;=:\\d{4})");
  • @Gavin 你可以。高达65535。但 OP 的用例似乎仅暗示 4 位端口。
  • 糟糕,抱歉,当我重新阅读帖子并发现大小限制时,我打算删除它。对不起,我的错。
  • @Gavin 不用担心,这是一个合法的问题。
【解决方案2】:

您可以使用以下代码来拆分 IP 地址。

String str = "176.32.37.27:777754.38.156.202:777751.68.208.5:7777";

String ipAdds[] = str.split("(?<=:\\d{4})");

for (String ipAdd: ipAdds)
     System.out.println(ipAdd);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多