字符串匹配问题?

时间:2011-03-23 08:06:25

标签: java string matching

我想解析一个文本文件。如果“:”发生,那么我想将数组分成两部分。第二部分进一步调查:如果它包含“in”(注意空格,这很重要)或“out”,则会填充arraylist端口。如果“in”和“out”都不在原始字符串的后半部分,则泛型会被填充。我尝试使用以下代码:

if (str.matches("\\:")) {
  String[] splitarray = str.split("\\:");
  if (splitarray[1].matches("in ")) {
    ports.add(str);
  } else {  
    if (splitarray[1].matches("out ")) {
      ports.add(str);
    } else {
      generics.add(str);
    }
  }
}

2 个答案:

答案 0 :(得分:1)

matches确定整个String是否与表达式匹配,而不是字符串的某些部分与表达式匹配。对于这么简单的情况,我不会使用正则表达式。只需使用indexOf查找子字符串:

int indexOfColon = str.indexOf(':');
if (indexOfColon >= 0) {
    String afterColon = str.substring(indexOfColon + 1);
    int indexOfIn = afterColon.indexOf("in ");
    // you get the idea
}

答案 1 :(得分:0)

看看这是否有帮助

public static void main(String[] args) {
    // assuming only 1 occurence of ':'
    String a = "sasdads:asdadin ";
    ArrayList<String> ports = new ArrayList<String>();
    ArrayList<String> generics = new ArrayList<String>();
    if (a.contains(":")) {
        String[] strings = a.split(":");
        if (strings[1].contains("in ")) {
            ports.add(strings[1]);
        }else{
            generics.add(strings[1]);
        }
    }
    System.out.println();
}