2016-09-17 7 views
2

どうすればこのような文字列をjavaで区切ることができますか? 引用符は区別されません。次のコードは完全にprintlnと共に文字列です。そして、それを出力のようにトークンに分割する必要があります。複数の区切り文字を使用し、空白を使用せずにJavaで文字列を区切るにはどうすればよいですか?

println "How are you",Sir, "Hope you are doing good","?" 

注:そこの間には空白がありません」と、等々... 出力:それが最適化されている場合

println 
"how are you" 
, 
Sir 
, 
"Hope you are doing good" 
, 
"?" 
+0

私はあなたの出力部分に ' '、' –

+1

'と置き換えられているようです。基本的に私はst全体を分割する必要がありますトークンにリングする。そして、「あなたはどうですか?」のような多くの場所では、空白がありません。 – Ronn

+0

デリミタを出力に含める必要がありますか?私は、引用符とコンマを印刷しなければなりませんか? – markspace

答えて

0

いけない知っているが、それはあなたの望ましい結果が得られます

Pattern pattern = Pattern.compile("(\"[^\"]*\")|(\\w+)|(,)"); 
     Matcher matcher = pattern.matcher(string); 
     while(matcher.find()){ 
      if(matcher.group(2)!=null) 
      System.out.println(matcher.group(2)); 
      if(matcher.group(1)!=null) 
      System.out.println(matcher.group(1)); 
      if(matcher.group(3)!=null) 
      System.out.println(matcher.group(3)); 
     } 
+0

Works Perfect!ありがとう。私はRegexとパターンクラスに深く浸る必要があると思う。私にはさらに多くの条件があります。私は両方のことについて学ぶために見ることができる任意の提案? – Ronn

+0

[http://www.vogella.com/tutorials/JavaRegularExpressions/article.html] (http://www.vogella.com/tutorials/JavaRegularExpressions/article.html)、 [http://www.tutorialspoint。 com/java/java_regular_expressions.htm](http://www.tutorialspot.com/java/java_regular_expressions.htm)、[https://regexone.com/](https://regexone.com/)、 参照これとあなたが参照することができる多くがあります。 –

+0

「もっと多くの」条件をカバーするには、パーサーを手で動かすことをお勧めします。それは難しいことではなく、正規表現は非常に複雑になるか、不可能にさえなります。 – markspace

関連する問題