[英]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.