splitとStringTokenizerが複数の区切り文字を使用する場合

1377 ワード

public String[] split(String regex)
この文字列は、指定された正規表現の一致に基づいて分割されます.
public StringTokenizer(String str, String delim) 
str-解析する文字列.delim-区切り記号.
この文章は主に、複数の区切り記号が必要な場合、どのように書くべきかを説明しています.
コード:
import java.util.StringTokenizer;

public class MultiplySeparator {

	//           
	public static void main(String[] args) {
		String content = "a,b,c,d;e;f.g,d;f.h.z.v.b.m#e";
		String[] results = content.split("\\.|;|#|,"); //         		
		for(int i = 0; i < results.length; i++) {
			System.out.println(results[i]);
		}
		
		System.out.println("====        ====");
		
		StringTokenizer st = new StringTokenizer(content, ".,#");
		while(st.hasMoreTokens()) {
			System.out.println(st.nextToken());
		}
	}

}

実行結果:
a
b
c
d
e
f
g
d
f
h
z
v
b
m
e
====        ====
a
b
c
d;e;f
g
d;f
h
z
v
b
m
e

結果は私たちが予想したように、splitの正規表現が次のフォーマットに書かれている場合:content.split(".|;||||,")では、結果はどうなるのでしょうか.興味のある子供靴は自分でテストすることができます.
注意:
1、「.」を使うと「|」と区切り記号として、エスケープが必要です.すなわちsplit("\.")と書きます.あるいはsplit("\|")では、予想通りの結果が得られます.
したがって、私たちの区切り文字自体がエスケープ文字である場合、私は「|」で区切られていることをシステムに伝えなければなりません.ここで「|」はエスケープ文字ではありません.
2、ある文字列を処理するために複数の区切り文字が必要な場合は、接続文字として「|」を使用します.例えば、content.split("\\.|;|#|,").