0

我遇到問題,如果在IsolatedStorage文件名中使用了特殊字符(除了完整句號,冒號和破折號),我的應用程序將崩潰。IsolatedStorage名稱中的特殊字符

有沒有在IsolatedStorage文件名中使用這些特殊字符的解決方法。

如果不能如何刪除所有特殊字符?

附註:我從文本框中輸入文件名。

回答

3

我相信你在找什麼是Input Scope。只需將輸入範圍設置爲「文件名」即可。 有些方法可以通過代碼或外部參照表解決,但更優雅(IMO)只是限制可以輸入的內容。

+0

如果您希望用戶輸入文件名,那麼您應該使用@TheBrain建議的預防性方法。不要去掉代碼中的字符,然後更改文件名,而不是首先將它們輸入。 InputScope爲此目的而存在 –

+0

「文件名」和「FullFilePath」輸入範圍允許用戶輸入諸如「\」,「/」,「?」,「<」等無效字符(除非這些字符在隔離存儲?我沒有嘗試過,但是它們在Windows上無效) – keyboardP

+0

那麼我將如何去實現這個輸入範圍呢? – Newbie

1

有一些文件名不能包含如<>|等等......你可以用這種方法來去除文本中發現的任何特殊字符

string cleanedFilename = RemoveSpecialCharacters(myTextBox.Text); 

public string RemoveSpecialCharacters(string input) 
{ 
    StringBuilder sb = new StringBuilder(); 
    foreach(char c in input) 
    { 
     if(Char.IsLetter(c)) 
      sb.Append(c); 
    } 

    return sb.ToString(); 
} 

您還可以檢測某些字符如果有任何非字母字符來驗證TextBox。然後您可以讓用戶知道有不受支持的字符。只需修改上述方法

public bool ContainsNonLetters(string input) 
{ 
    foreach(char c in input) 
    { 
     if(!Char.IsLetterOrDigit(c)) 
      return true; 
    } 

    return false;  
} 

當用戶提交時,您可以執行檢查。

if(ContainsNonLetters(filename)) 
{ 
    MessageBox.Show("Please use alphanumeric characters only"); 
} 
else 
{ 
    MessageBox.Show("Filename seems fine"); 
} 

如果你希望允許非字母數字字符,那麼你可以有不允許的字符的列表,並檢查文件名中的任何字符在該列表中存在。