我在处理一行中的字符串时遇到问题, 例如,我在.txt文件中有以下行:
ussdserver link from host /127.0.0.1:38978(account smpp34) is up|smpp34|2012-10-28 17:02:19
ussdserver link from host localhost/127.0.0.1:8088(account callme) is up|callme|2012-10-28 17:02:20
我需要我的代码才能在“帐户”之后(第一行是smpp34)和单词“up”(在“是”单词之后)获得单词。
我考虑使用String.charAt()
方法,但它在这里不起作用,因为我需要的单词可以在不同的地方,如上例所示。
答案 0 :(得分:1)
尝试使用以下String
类的方法。
String inputStr = "ussdserver link from host /127.0.0.1:38978(account smpp34) is up|smpp34|2012-10-28 17:02:19";
int index1 = inputStr.indexOf("account");
int index2 = inputStr.indexOf(')',index1);
String accountName = inputStr.substring(index1+8,index2); // you get smpp34
index1 = inputStr.indexOf("|");
index2 = inputStr.lastIndexOf(' ', index1);
String state = inputStr.substring(index2+1, index1) // you get up
答案 1 :(得分:0)
是的,最好在这种情况下使用正则表达式。但是一个更简单的方法可以专门用于以上情况。只需尝试从分割,然后读取直到字符串-5的长度为长度将为您提供第一个单词并尝试类似于第二个单词..
IF和仅当上面的String模式永远不会改变时..Esese会建议使用regex ..
答案 2 :(得分:0)
尝试这样的RegEx。
Pattern pattern = Pattern.compile(".*account\\s([^\\s]*)\\)\\sis\\s([^|]*)|.*"); Matcher matcher = pattern.matcher("ussdserver link from host /127.0.0.1:38978(account smpp34) is up|smpp34|2012-10-28 17:02:19"); while (matcher.find()) { System.out.println(matcher.group(1));//will give you 'smpp34' System.out.println(matcher.group(2));//will give you 'up' return; }