私のプログラムには次のコードがあります。ハイフンに遭遇すると行を分割し、各単語を文字列配列「tokens」に格納します。しかし、ハイフンが文で検出されたときに、ハイフンも文字列配列の「トークン」に格納する必要があります。
String[] tokens = line.split("-");
上記のコードは文を分割しますが、結果の配列のハイフンも完全に無視します。結果の配列にもハイフンを格納するにはどうすればよいですか?
編集 : -
whitespaces
両方で分割したいようですhyphen
がhyphen
、array
(この行から推測すると、各単語を文字列配列に格納します)、これを使用できます:-
String[] tokens = "abc this is-a hyphen def".split("((?<=-)|(?=-))|\\s+");
System.out.println(Arrays.toString(tokens));
出力: -
[abc, this, is, -, a, hyphen, def]
spaces
ハイフンの前後を処理するには、まずreplaceAll
メソッドを使用してこれらのスペースを削除してから、分割します: -
"abc this is - a hyphen def".replaceAll("[ ]*-[ ]*", "-")
.split("((?<=-)|(?=-))|\\s+");
前の回答: -
これを使用できます: -
String[] tokens = "abc-efg".split("((?<=-)|(?=-))");
System.out.println(Arrays.toString(tokens));
出力 : -
[abc, -, efg]
empty
の前後の文字で分割されますhyphen (-)
。
Java Pattern および Matcher と組み合わせて正規表現を使用することをお勧めします。例:
String line = "a-b-c-d-e-f-";
Pattern p = Pattern.compile("[^-]+|-");
Matcher m = p.matcher(line);
while (m.find())
{
String match = m.group();
System.out.println("match:" + match);
}
正規表現をテストするには、このようなオンライン正規表現テスターを使用できます