(転)文字列分割--java中Stering.split()用法
1、
「.」と「|」は全部意味を変える文字で、必ず「\」を加えなければなりません。
「.」を区切りとする場合は、Stering.split(\.」)と書く必要があります。これで正しい区切りができ、Stering.split(.); 「|」を区切りとする場合は、String.split(\\\\\\\")と書く必要があります。これで正しい区切りができます。String.split(「|」)は使えません。2、一つの文字列の中に複数のセパレータがある場合、「acount=?and uu=?or n=?」などのハイフンとして「|」を使用して、三つを分離して、Stering.split(「and|or」)を使用することができます。3、public String[]split(String regex、int limit)は、与えられた正規表現にマッチすることによって、この文字列を分割します。この方法で返された配列は、与えられた表現にマッチする別のサブ文字列によって終了されるか、または文字列によって終了されるこの文字列の各サブ文字列を含んでいます。配列のサブ文字列は、この文字列の順に並べられます。表式が入力のどの部分にもマッチしない場合、結果配列は要素だけを持っています。つまり、この文字列です。4、public string[]split(string regex)ここのパラメータの名称はregexで、つまりreglar expression(正規表現)です。このパラメータは単純な分割用の文字ではなく、正規表現です。
彼はいくつかの特殊な文字について予想できない結果を出すかもしれません。たとえば、次のコードをテストします。 (1)縦線で文字列を区切ると、予想される結果が得られなくなります。
String[] aa = "aaa|bbb|ccc".split("|"); //String[] aa = "aaa|bbb|ccc".split("\\|"); for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa); }
(2)縦断文字列で運転するとjava.util.regex.PatternSynt SyntxExceptionが異常になります。プラス記号で+も同じです。 String[] aa = "aaa*bbb*ccc".split("*"); //String[] aa = "aaa|bbb|ccc".split("\\*"); for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa); }
(3)+*は有効なパターンマッチング規則式ではないことは明らかです。「\*」「\+」で変換すれば正しい結果が得られます。 (4)「|」の区切りは実行できますが、意図した目的ではなく、「\\124;」が転じて正しい結果が得られます。 (5)また、「」の文字を串に使おうとする場合は、意味を変える必要があります。まず「aaaa\bb」という表現をするには、「aaaaaa\bb」を使うべきです。分離するなら、正しい結果が得られます。 String[]a="aaa\\bbcc".split(\\\\\\\\\\\) (6)また、「.」という点もありますが、まずは正しい結果が得られます。第一の方法:
string s="abcdeabcdeabcde"; string[] sArray=s.Split('c') ; foreach(string i in sArray) Console.WriteLine(i.ToString());
以下の結果を出力します。 ab。 deab deab スタイル 第二の方法: 指定された文字で分割された結果を見た。もう一つの構成方法を使用して、複数の文字を分割します。 string s="abcdeabcdeabcde"; string[] sArray1=s.Split(new char[3]{'c','d','e'}) ; foreach(string i in sArray1) Console.WriteLine(i.ToString());
以下の結果を出力できます。 ab。 ab。 ab。 第三の方法: 以上の2つの方法を除いて,第3の方法は正規表現を使用することである。新しいコンソールプロジェクトを作成します。まずusing System.Text.Reglar Expressionsを追加します。 using System.Text.RegularExpressions string content=agcsmallmacsmallgggsmallytx; string[] resultString=Regex.Split(content,small,RegexOptions.IgnoreCase) foreach(string i in resultString) Console.WriteLine(i.ToString());
以下の結果を出力します。 アゴ mac gg ytx 第四の方法: string str1=" ***** ***** ***** ***** ***** "; string[] str2; str1=str1.Replace("*****","*") ; str2=str1.Split(’*‘) ; foreach(string i in str2) Console.WriteLine(i.ToString());
第五の方法: string str 1="私は****一つの***教师です。 表示したい結果は、私は教師です。上の4つの方法を採用すれば、次のようなエラーが発生します。私は教師です。中間にスペースがあります。だから、出力結果は希望の結果ではなく、正規表現に戻ります。この時は次の5つの方法を採用できます。 string str1=‘ ** ***** ***** ***** ***** “; string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@[*]+); foreach(string i in str2) Console.WriteLine(i.ToString());
ここでは[*]+を通じて私達の目標を見事に完成しました。回転:http://blog.163.com/zs_note/blog/static/199386112201110804233558/