【问题标题】:Java: Store specific part of string to an arrayJava:将字符串的特定部分存储到数组中
【发布时间】:2017-02-19 07:02:39
【问题描述】:

我正在使用 inputstreamer 来检索 shell 命令的输出,该命令连续运行并提供输出。

我已经设法通过在此处打印来隔离 shell 输出的一部分:System.out.println(inputStr.substring(inputStr.lastIndexOf(" ")+1));

但是,我想将输出存储在两个数组中的任何一个中,具体取决于 shell 输出的表达式。

假设我们有两个遵循以下语法的 shell 输出:IP 192.168.0.12.4588 > 212.98.120.24.443 psx 4488 作为第一个,相反:IP 212.98.120.24.443 > 192.168.0.12.4588 psx 12

从上面的打印中,我可以隔离并打印448812。但如果 192.168.0.x.x 是第一个 IP,则值 4448 将存储在特定数组中。同样,如果 > 192.168.0.x.x 在另一边,我想将值 12 存储在不同的数组中。

我该怎么做?

【问题讨论】:

  • 你可以使用regex...
  • 我现在正在阅读正则表达式。您将如何使用正则表达式来区分 > 192.168.0.XX.XXX 的哪一侧在上? xx.xxx 可以随时更改。只有 192.168.0 是恒定的 :)
  • 您可以解析整个输入的对象,例如 (ip, left_side, right_side,psx, number),然后比较您的左侧是否以 192.168.0 开头

标签: java regex shell


【解决方案1】:

你可以这样做:

public static void main(String[] args)
{
    String temp = "IP 212.98.120.24.443 > 192.168.0.12.4588 psx 12";
    if(temp.matches(".*192\\.168\\.0\\..*>.*"))
    {
        System.out.println("1st");
        //your code here
    }
    else if(temp.matches(".*>.*192\\.168\\.0\\..*"))
    {
        System.out.println("2nd");
        //your code here
    }
}

【讨论】:

  • 我也成功了tmp.matches(".*?192\\.168\\.0\\.\\d+\\.\\d+\\s*>.*?") -> left。和tmp.matches(".*?>\\s*192\\.168\\.0\\.\\d+\\.\\d+.*?") -> 对。
  • 非常有帮助!如上所述,值可能会在 192.168.0 之后发生变化,但我认为你已经解决了这个问题。试一试,干杯
猜你喜欢
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 2013-05-02
  • 2021-12-07
  • 2017-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多