1

私のプログラムには次のコードがあります。ハイフンに遭遇すると行を分割し、各単語を文字列配列「tokens」に格納します。しかし、ハイフンが文で検出されたときに、ハイフンも文字列配列の「トークン」に格納する必要があります。

String[] tokens = line.split("-");

上記のコードは文を分割しますが、結果の配列のハイフンも完全に無視します。結果の配列にもハイフンを格納するにはどうすればよいですか?

4

2 に答える 2

1

編集 : -

whitespaces両方で分割したいようですhyphenhyphenarray(この行から推測すると、各単語を文字列配列に格納します)、これを使用できます:-

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 (-)

于 2012-11-28T09:30:06.313 に答える
0

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);
}

正規表現をテストするには、このようなオンライン正規表現テスターを使用できます

于 2012-11-28T09:33:19.270 に答える