2016-03-29 109 views
0

我想檢查包含路徑的字符串是否合法。從路徑字符串獲取當前操作系統/過濾器無效字符的有效路徑字符

什麼不起作用:

  • 我可以使用正則表達式和替換無效字符爲特定操作系統(如Windows);這隻會在一個特定的操作系統上工作
  • 我可以使用Java 7的NIO Paths.get()並捕獲異常,但這隻會說明路徑是否有效,我想刪除無效字符。

我只在互聯網上發現了上述事情之一的來源。在標準庫中會出現類似getInvalidChars()的東西,它會給我一個系統相關的無效字符列表(或者相反,getAllowedChars()或類似的東西)。

Java版本無關緊要。

在此先感謝!

+0

如果它作爲安慰,由Paths.get()生成的InvalidPathException會在其getIndex()方法返回有問題的字符的位置。也許這可以作爲(超慢)字符檢查器的基礎... –

+0

我會檢查它的速度有多慢,它不必很快。 – kaesaecracker

回答

0

您可以使用System.getProperty("os.name")來獲取操作系統。所以,你可以做這樣的事情:

String os = System.getProperty("os.name").toLowerCase(); 
if (os.indexOf("win") >= 0) 
    invalidChars("win"); 
else if (os.indexOf("mac") >= 0) 
    invalidChars("mac"); 
else if (os.indexOf("linux") >= 0) 
    invalidChars("linux"); 

然後invalidChars(String os)功能將消除因給出的OS上的無效字符。

+0

謝謝,但我希望能有一個適當的解決方案,我不必自己製作一個字符列表...... – kaesaecracker

相關問題