[英]How to split a string with certain delimiters in java
我有一個字符串
[Ian Wood P. M. Visscher]
[Ian Wood L. Mengersen]
[Ian Wood]
[P. M. Visscher Ian Wood].
我想將此字符串寫入二維數組。 字符串
a[0][0]=Ian Wood ,
a[0][1]=P. M. Visscher,
a[1][0]=Ian Wood,
a[1][1]=L. Mengersen and so on.
每次輸入時,字符串中的名稱都會改變,如何將其拆分並以上述形式存儲在數組中。 請提出任何想法。 在此先感謝您。下面是我正在處理的代碼,但未正確拆分。
String[] parts = output.split(" ");
String[][] table = new String[parts.length / 2][2];
for (int i = 0, r = 0; r < table.length; r++) {
table[r][0] = parts[i++];
table[r][1] = parts[i++];
}
System.out.println(java.util.Arrays.deepToString(table));
我假設您將縮寫表示為“某些定界符”,並且您輸入的字符串是字符串數組:
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static java.lang.System.out;
import static java.util.regex.Pattern.CASE_INSENSITIVE;
import static java.util.regex.Pattern.compile;
public final class Q14914678 {
private static final Pattern pattern = compile("^\\s*((?:[a-z]+\\s*?)*)\\s*([a-z]\\..*)?", CASE_INSENSITIVE);
private static final String[] names = {
"Ian Wood P. M. Visscher",
"Ian Wood L. Mengersen",
"Ian Wood",
"P. M. Visscher Ian Wood"
};
public static void main(String[] args) {
final List<String[]> collected = new ArrayList<String[]>();
for ( final String name : names ) {
final Matcher matcher = pattern.matcher(name);
if ( matcher.matches() ) {
collected.add(new String[] {matcher.group(1), matcher.group(2)});
}
}
for ( final String[] array : pairArray ) {
out.println(array[0] + " / " + array[1]);
}
}
}
結果如下:
Ian Wood / P. M. Visscher
Ian Wood / L. Mengersen
Ian Wood / null
/ P. M. Visscher Ian Wood
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.