役に立つヒント

改行でJava文字列を分割する

Pin
Send
Share
Send
Send


「004-034556」、string1 = 004 string2 = 034556があり、2行に分割します。

つまり、最初の行には '-'の前の文字が含まれ、2番目の行には文字列の文字列#split()の後の文字が含まれますString = "004-034556"、String [] parts = string.split( "-")、String part1 = parts、// 004 String part2 = parts、// 034556文字列が含まれているかどうかも確認したい^そうでない場合は、例外をスローします。どうすればこの$

返信:30

適切な方法を使用してください*。

これは正規表現を使用するため、必要に応じて特殊文字を保存してください。

したがって、たとえば、期間/ポイントを分割する場合。これは、正規表現の「任意の文字」を意味し、バックスラッシュ、分割(「[。]」)を使用して単一の特殊文字パターン#quote()などを回避するか、分割文字クラス(Pattern.quote( ")を使用します。 "))このように文字を表す文字列[] parts = string.split(Pattern.quote("。 "))、//ピリオドで分割、またはString#contains()を使用して、文字列全体を回避するにはif(string.contains( "-"))<//分割します。 > else <throw new IllegalArgumentException( "String" + string + "does not contain-")、>。

文字列に特定の文字(文字)が含まれているかどうかを事前に確認するには、単に使用しますか? 。

これは正規表現を受け入れないことに注意してください。これを行うには、代わりに?=を使用します。

結果のパーツで区切り文字を保持する場合は、正の裏面を使用します。分割文字を左側に配置する場合は、String string = "004-034556"、String [] parts = string.split( "(?=-)")、String part1 = parts、/を追加して、後読みを使用します。 / 004 String part2 = parts、// -034556テンプレート内のグループ。

分割文字を右側に配置する場合は、String string = "004-034556-42"、String [] parts = string.split( "-"、2)、String part1 = parts、/を使用して正の先読みを使用します。 / 004 String part2 = parts、// 034556-42テンプレートのグループプレフィックス。

結果のパーツの数を制限する場合は、(d +)-(d +)メソッドの2番目の引数として目的の数を指定できます。

文字列を直接処理する代わりに、キャプチャグループで正規表現を使用することもできます。この利点は、より複雑な入力制限が明らかになることです。たとえば、次の例では文字列を2つの部分に分割し、両方が数字のみで構成されるようにします。

このインスタンスではテンプレートが固定されているため、事前にコンパイルして、静的メンバーとして保存できます(例でクラスがロードされたときに初期化されます)。正規表現:

括弧はキャプチャグループを示し、示されているように、Match.group()メソッドによって正規表現のこの部分に一致する文字列を取得できます。記号dは1つの10進数字に対応し、記号+は「前の表現の1つ以上に一致する」ことを意味します。 「それは実際には問題ではないので、この入力シンボルに一致するだけです。」これをJava文字列として記述するときは、バックスラッシュを2倍にする必要があることに注意してください。他の例:

これにより、文字列が2つの部分に分割されます。配列の最初の要素は、前の素材を含む部分であり、配列の2番目の要素は、後の文字列の部分を含みます。

配列の長さが2に等しくない場合、文字列の形式はsplit()ではありません。

17の答え

これはあなたをカバーするはずです:

心配する必要があるのは、2行(UNIXとWindows)だけです。

空の行が必要ない場合:

splitメソッドは、正規表現(正規表現)を使用します。 Java 8正規表現は Rをサポートしているため(これは(Patternクラスのドキュメントと共に):

改行マッチャー
R任意のUnicode改行シーケンスは u000D u000A | [ u000A u000B u000C u000D u0085 u2028 u2029]と同等です

一致させるためにそれを使用できます:

  • u000D 0A-> r nペア
  • u000A ->フィードライン( n)
  • u000B ->文字列の表(タブ文字と混同しないでください t)
  • u000C->フィードフォーム( f)
  • u000D->キャリッジリターン( r)
  • u0085->次の行(NEL)
  • u2028 ->行区切り
  • u2029->アイテムセパレータ

ご覧のとおり、 r nは正規表現の先頭に配置されます。これにより、正規表現が最初にこれに一致しようとします。 カップル、これが失敗した場合にのみ、彼は一致しようとします 一文字 行区切り記号。

分割線に分割する場合は、split( " R")を使用します。

改行の例

strMain変数があるとします。その意味は、「アルファ、ベータ、ガンマ、デルタ、シグマ」というカンマで区切られた複数の単語で構成されています。

各単語を個別の行に出力し、コンマで区切ります。その結果、5つの個別の行が得られます。

これを実装するには、split()メソッドを使用します。引数として、splitに渡します。この場合、区切り記号はコンマです。サンプルコード:

文字列をスペースで分割する方法

行をスペースで区切る必要がある状況を考えます。以下の例を見てください。 「Welcome to Guru99」という複数の単語で構成される文字列変数strMainがあります。

この出版物は、インターネット技術プロジェクトの友好的なチームによって作成された記事「Javaで文字列を分割する方法:例で学ぶ」の翻訳です。

Pin
Send
Share
Send
Send