2011-02-11 15 views
3

リクエストからString変数を取得しています。文字列をハイフンで2つに分割します。

String issueField = request.getParameter("issueno"); 

これは、あるいは途中でハイフンを持っていない可能性があります。ハイフンが見えるときに文字列をトラバースして文字列を分割できるようにしたい。

+2

なぜ 'issueField.split(" - ")'を使用せず、単に配列のサイズをチェックしますか? – Favonius

答えて

9

使用のString#分割:

String[] parts = issueField.split("-"); 

は、その後、あなたが最初の部分、第二のためにparts[1]を取得するためにparts[0]を使用することができます...

+2

バー、parts.lengthが2より大きいか等しいかどうか確認してください。複数のハイフンなどがあるかどうかを確認してください。 –

1

String.splitは仕事を行いますが、 GuavaのSplitterクラスは後続の区切り文字を黙って捨てることはなく、APIは必要でないときに正規表現を使用することを強制しません:

01あなたの質問に関しては

http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Splitter.html

、ここでのコードスニペットです:代わりのstring.Splitのスプリッタを使用して

Iterable<String> parts = Splitter.on('-').split(issueField); 

いくつかの追加ボーナス:

  • ザ・はIterableは怠け者である返されました。 他の言葉では、あなたがそれを反復するまで実際には の仕事をしません。
  • トークン のすべてを分割してメモリに格納するわけではありません。 token-by-token、 メモリ使用量を倍増させることで、巨大な文字列を繰り返し処理できます。

スプリッタを使用しない唯一の理由は、クラスパスにGuavaを含めたくない場合です。

0

java.util.StringTokenizerクラスも使用できます。 String.splitはあなたの問題に対してより簡単で適切な方法ですが。

関連する問題