ファイル名をベースに分割しようとしていますが、その拡張子です。私はこの質問にthis答えを見つけましたが、私はこの答えが答えない別の条件があります。私は追加する必要がある2つの条件があります:ファイル名をベースと拡張子に分割する方法
1.ファイルが "。"で始まる場合、他のピリオドがない場合は、最初のピリオドがファイル名の一部であり、拡張子がない(拡張子が "")ようにカウントされます。
fileName.split("\\.(?=[^\\.]+$)")
はリンク 答えが与えられたファイル名 ".Myfile" のために
["",MyFile"]
を返しますが、私はそれを返すようにしたいことは
[.MyFile,""]
されています正規表現を使用して(条件を変更して)行う方法はありますか?
2.ファイル名に関係なく、2つのセルが必要です。ファイル名が "README"の場合は、まだ2つのセルを作成する必要があり、2番目のセルに空の文字が含まれている必要があります。
私がしたい:
[README,""]
が返されます。
これは可能ですか?
編集:解決済み! の助けを借りてWiktorStribiżew私はそれを解決しました。私が望んでいたように私は結果
"README.txt" => [REAADME,txt]
".README" => [REAADME, ]
"README" => [REAADME, ]
String fileName;
String[] splitedName
String pat = "((?!^)\\.(?=[^.]*$|(?<=^\\.[^.]{0,1000})$))|$";
fileName = "README.txt"
System.out.println(Arrays.toString(fileName .split(pat,2)));
fileName = ".README"
System.out.println(Arrays.toString(fileName .split(pat,2)));
fileName = "README"
にそれを変更しました。
この時点では、ファイル名を解析する短い方法の方が良い選択肢だと感じます。 – markspace
上記の質問に記載されている要件は、重複した質問と完全に一致していません – Sanjeev
これは明らかに重複した質問ではありません。私はオリジナルのqurstionを追加し、正しい形式を得るために必要な2つの大きな違いを述べました。 –