gpt4 book ai didi

Java扫描器,获取字符串的特定部分

转载 作者:行者123 更新时间:2023-11-30 04:50:46 25 4
gpt4 key购买 nike

输入问题并检查类似的标题问题后,我将继续,因为我仍然不确定......

我有一些跟踪路由..例如

14  t1tug.sunet.se (109.105.102.14)  48.394 ms  46.590 ms t1tug.sunet.se (109.105.102.18)  46.549 ms
15 t1fre-ae0-v1.sunet.se (130.242.83.37) 46.563 ms 46.087 ms m1tug-ae0-v1.sunet.se (130.242.83.42) 46.114 ms
16 m1fre-ae0-v1.sunet.se (130.242.83.50) 46.941 ms 44.270 ms 44.739 ms
17 uu-br1-xe-1-2-0.sunet.se (130.242.85.134) 47.494 ms 47.179 ms 45.662 ms
18 uu-g.sunet.se (193.11.0.234) 47.732 ms 44.848 ms 46.631 ms
19 PB-VSS.UU.SE (130.238.6.229) 48.695 ms 48.375 ms 46.407 ms
20 infoglue.uu.se (130.238.7.24) 50.402 ms 51.741 ms 52.465 ms

使用startswith我已经剪切了我的数据,这样只有以跳数开头的行才会被处理,所以我认为我已经简化了我的问题。

现在,从第一个路由到最后一个路由的所有数据在跃点名称之前都有 4 个字符。我只对名字感兴趣。有没有一种简单的方法可以从第 5 个字符到该字符串部分的末尾?

我只想要“m1fre-ae0-v1.sunet.se”

这将被传递到 csv 文件。但我有能力做到这一点,只是不确定我会如何去做。我看过正则表达式,但根据我对它的理解,名称的格式确实有很大差异。我很乐意承认自己很弱。

非常感谢您抽出时间。

最佳答案

我认为有两种方式:

1.用“”分割扫描仪字符串。然后你就会得到你想要的字符串,如下所示:

String line = "14  t1tug.sunet.se (109.105.102.14)  48.394 ms  46.590 ms t1tug.sunet.se 109.105.102.18)  46.549 ms"
String splitted[] = line.trim().split("\\s+");
System.out.println(splitted[1]); //your desired string

当然,你需要在 .split() 方法中放置足够的空格

2.使用正则表达式替换字符串:

String line = "14  t1tug.sunet.se (109.105.102.14)  48.394 ms  46.590 ms t1tug.sunet.se (109.105.102.18)  46.549 ms";
String regexp = "^\\s*[0-9]+\s+([0-9A-Za-z\.\-]+)(.*)$";
line = line.replaceAll( regexp, "$1" );
System.out.println(line);

关于Java扫描器,获取字符串的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com