0

我在处理一行中的字符串时遇到问题,例如,我在 .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

我需要我的代码来获取“account”之后的单词(在第一行是 smpp34)和单词“up”(在“is”单词之后)。

我考虑过使用String.charAt()方法,但在这里不起作用,因为我需要的单词可以在不同的地方,如上例所示。

4

3 回答 3

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
于 2012-10-30T07:36:33.247 回答
0

是的,在这种情况下最好使用正则表达式。但是可以专门针对上述情况使用更简单的方法。只需尝试从)拆分,然后阅读直到 string-5 的长度到 length 将为您提供第一个单词并尝试类似的第二个单词..

如果并且仅当上面的字符串模式永远不会改变..否则将推荐使用正则表达式..

于 2012-10-30T07:37:46.873 回答
0

像这样尝试正则表达式。

  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;
  }
于 2012-10-30T07:51:30.247 回答