[解決済み] Javaで文字列を分割する方法
質問
文字列があるのですが、どうすればいいですか?
"004-034556"
を2つの文字列に分割したい。
string1="004";
string2="034556";
つまり、最初の文字列には、その前の文字である
'-'
の後の文字が含まれ、2番目の文字列は
'-'
. また、文字列が
'-'
が入っています。そうでない場合は、例外を投げることになります。どうしたらいいでしょうか?
どのように解決するのですか?
適切な方法を使用するだけです。
String#split()
.
String string = "004-034556";
String[] parts = string.split("-");
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556
なお、これは 正規表現 をエスケープすることを忘れないでください。 特殊文字 が必要です。
そこ は特別な意味を持つ12文字です:バックスラッシュ
\
キャレット^
ドル記号$
ピリオドまたはドット.
縦棒またはパイプ記号|
クエスチョンマーク?
アスタリスクまたは星*
プラス記号+
冒頭の括弧(
閉じ括弧)
および開始角括弧[
冒頭の中括弧{
これらの特殊文字は、しばしばメタキャラクタと呼ばれます。
つまり、例えばピリオド/ドットで分割したい場合
.
というのは、" を意味します。
任意の文字
正規表現では、次のいずれかを使用します。
バックスラッシュ
\
のように、個々の特殊文字をエスケープするために
split("\\.")
を使用するか、または
文字クラス
[]
のように、リテラルな文字を表現することができます。
split("[.]")
を使用するか、または
Pattern#quote()
のように文字列全体をエスケープします。
split(Pattern.quote("."))
.
String[] parts = string.split(Pattern.quote(".")); // Split on period.
文字列が特定の文字を含むかどうかを事前にテストするには、次のようにします。
String#contains()
.
if (string.contains("-")) {
// Split it.
} else {
throw new IllegalArgumentException("String " + string + " does not contain -");
}
注意:これは正規表現を取らない。その場合は
String#matches()
の代わりに
結果のパーツに分割文字を残したい場合は
正引き
. 分割された文字を左側に持ってきたい場合は
?<=
というグループをパターン上に配置します。
String string = "004-034556";
String[] parts = string.split("(?<=-)");
String part1 = parts[0]; // 004-
String part2 = parts[1]; // 034556
分割文字が右側に来るようにしたい場合は、正のルックヘッドを使用します。
?=
グループをパターン上に配置します。
String string = "004-034556";
String[] parts = string.split("(?=-)");
String part1 = parts[0]; // 004
String part2 = parts[1]; // -034556
もし、出来上がるパーツの数を制限したいのであれば、その数を
split()
メソッドを使用します。
String string = "004-034556-42";
String[] parts = string.split("-", 2);
String part1 = parts[0]; // 004
String part2 = parts[1]; // 034556-42
関連
-
[解決済み] .NETで文字列を改行で分割する最も簡単な方法とは?
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
エラー java.util.NoSuchElementException
-
springboot project MIMEタイプ text/htmlで転送された静的ファイルを読み込む。
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
Spring Boot による HTTPS アクセスの設定
-
SpringBootApplication を型解決できない。
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
スレッド "main" で例外発生 java.lang.ArrayIndexOutOfBoundsException: 0 at One1.main(One1.java:3)
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
このラインで複数のマーカーを解決する方法