Bhves:
私は、フィールドがタブ(\ t)は、このようなルックスで区切られている入力ストリームを持っています
String str = " acc123\tdpId123\t2011-01-01\t2022-01-01\[email protected]\tIN\t1233\tSOMETHING ";
これは私が行うとき、正常に動作str = str.trim();
し、
strArray = str.split("\t", -1);
strArray=["acc123","dpId123","2011-01-01","2022-01-01","[email protected]","IN","1233","SOMETHING"] will give size as 8
しかし、入力レコードの最後のフィールドは必須ではありませんし、スキップすることができます。
だから、入力があまりにもこのようになります。
String str1 = "acc123\tdpId123\t2011-01-01\t2022-01-01\[email protected]\tIN\t1233\t";
しかし、この場合、最後のフィールドが空でなければなりませんが、私はトリム後にこの文字列を使用し、分割したときに、私のサイズは7です
str1 = str1.trim();
strArray = str1.split("\t", -1);
strArray=["acc123","dpId123","2011-01-01","2022-01-01","[email protected]","IN","1233"]will give size as 7
でも私はしたい
strArray=["acc123","dpId123","2011-01-01","2022-01-01","[email protected]","IN","1233",""]
どのように私はこのような状況を避けることができますか?
Mushifアリナワズ:
あなたはそこに行きます:
String str1 = " acc123\tdpId 123\t201 1-01-01\t2022-01-01\[email protected]\tIN\t1233\t";
str1 = str1.replaceAll("^[ ]+", ""); // removing leading spaces
str1 = str1.replaceAll("[ ]+$", ""); // removing trailing spaces
String[] split = str1.split("\t", -1);
System.out.println(Arrays.toString(split));
System.out.println(split.length);
文字列#トリム方法も削除されます\t
。私は正規表現を使用してのみ、先頭と末尾のスペースを削除したことを処理するには。
出力:
[acc123, dpId 123, 201 1-01-01, 2022-01-01, [email protected], IN, 1233, ]
8