簡體   English   中英

字符串匹配問題?

[英]string matching problem?

我想解析一個文本文件。 如果出現“:”,那么我想將數組分為兩部分。 第二部分將進一步研究:如果它包含“ 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);
    }
  }
}

matches確定整個String是否匹配表達式,而不是字符串的某些部分匹配表達式。 對於這種簡單的情況,我不會使用regexp。 只需使用indexOf查找您的子字符串:

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

看看是否有幫助

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM