输入问题并检查了类似的标题问题我会继续,因为我还不确定...
我有一些跟踪路径......例如
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文件。但我有能力,我只是不确定我会怎么做。我看过正则表达式,但是我对它的理解确实因为名称的格式而有所不同。我很乐意承认自己很弱。
非常感谢你的时间。
答案 0 :(得分:2)
我认为它们有两种方式:
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);