0

配列内の先頭の空白と空の文字列を削除する方法を知りたいです。だから私は結果が欲しい:line 1,line 2,line3 line4,line5

String string="line 1, line 2, , ,   line3 line4,        line 5";
        ArrayList<String> sample=new ArrayList<String>();
        sample.add(string);
        ArrayList<String> result=new ArrayList<String>();
        for (String str : sample) {
            if(str!=null && !str.isEmpty()){`enter code here`
                result.add(str.trim());
            }
        }
4

5 に答える 5

1

これにはトークナイザーを使用できます。さらに文字列をトリミングすると、空でない部分のみが得られます。

StringTokenizer st = new StringTokenizer("line 1, line 2, , ,   line3 line4,        line 5", ",");
ArrayList<String> result = new ArrayList<>();
while (st.hasMoreTokens()) {
    String token = st.nextToken().trim();
    if (!token.isEmpty()) {
        result.add(token);
    }
}
于 2013-01-26T10:41:00.053 に答える
0

この方法で2つの正規表現を使用します。

まず、カンマ間のスペースを削除します。「、[] +、」を「,,」に置き換えます。例: "a 、、、、 b" => "a 、、、、b"。

次に、重複するコンマを削除します。「,,」を「、」に置き換えます。例: "a ,,,, b" => "a、b"。

最後にsplit、(Stringクラスの)メソッドを使用して、文字列を「、」で分割します。このループを繰り返してtrim()各トークンを実行すると、それを取得できます。

于 2013-01-26T10:37:37.293 に答える
0

試す

    Scanner sc = new Scanner(string);
    sc.useDelimiter(",\\s*");
    while(sc.hasNext()) {
        String next = sc.next();
        if (!next.isEmpty()) {
              ...
        }
    }
于 2013-01-26T10:51:58.970 に答える
0

これはそれを行う必要があります:

String[] array = 
  "line 1, line 2, , ,   line3 line4,        line 5".trim().split("\\s*,[,\\s]*");
于 2013-01-26T10:47:27.210 に答える
0

単純な正規表現です。コンマの前のすべてのスペースと、その後のすべてのスペースとコンマを削除します。これにより、次のようになります。

regex.Pattern(" *,[ ,]*").compile().matcher(string).replaceAll(",");

おそらく、パターンを毎回再コンパイルするのではなく、コードでプリコンパイルしたいでしょう。

于 2013-01-26T10:47:48.010 に答える