2016-04-25 3 views
-3

複数の出現を無視して区切り文字を1回だけ使用して文字列を分割する方法はありますか?例えば区切り記号の単一の出現に基づいて文字列を分割しますが、Javaでは重複しません。

、文字列は
AAA、BBB ,, CCC、私は次のように文字列を分割したいDDD
含まれている場合:

AAA
BBBを,, CCC
DDD

split()でRegexを使用しようとしましたが、目的の結果を取得できませんでした。

ここではJavascriptで解決策を見つけました:Split string with a single occurence (not twice) of a delimiter in Javascript Regexの有無にかかわらず、Javaで同じことを達成することは可能ですか?

(?<!,),(?!,) 

この正規表現は、先行していないにもカンマが続いているどちらもカンマにマッチする:あなたは、次のパターンを使用することができるように

+0

カンマの後に空白がありますか? – Hackerdarshi

+1

split()で試したことを私たちに見せてもらえますか? –

+0

スペースは、文字列の性質が異なる可能性があるため、コンマの後/前に存在する場合もあれば、存在しない場合もあります。問題の文字列はユーザ​​から取得されるため、スペースの有無は定義できません。 – Siva

答えて

3

String.split()は、区切り文字として正規表現を受け付けます。

あなたがここにアクションでそれを見ることができます。

あなたはニコラスFilottoで述べたように(?<!,),(?!,) *を使用することができると同時に、先頭のスペースをトリミングする場合https://ideone.com/CmtAzX

+0

良い1つは同じものを書こうとしていました – rock321987

+0

おそらくそれほど効率的ではありませんが、分割しないで解決すると良いでしょう。 – Aaron

+0

正規表現の観点からは良いと思っていますが、 – rock321987

0

正規表現では、指定したシンボルの前後に別のシンボルを指定することはできません。あなたの場合は、(?<!,),(?!,)を使用してください。一般に(?<!x)y(?!z)は、 'x'で始まり、 'z'で始まらない場合は 'y'を見つけるでしょう。

関連する問題