【问题标题】:Special characters in IsolatedStorage name隔离存储名称中的特殊字符
【发布时间】:2014-02-11 11:37:41
【问题描述】:

我遇到的问题是,如果在 IsolatedStorage 文件名中使用特殊字符(句号、冒号和破折号除外),我的应用程序将崩溃。

IsolatedStorage 文件名中使用这些特殊字符是否有任何解决方法。

如果没有,我怎样才能删除所有的特殊字符?

旁注:我从文本框中获取文件名的输入。

【问题讨论】:

    标签: c# windows-phone-7 windows-phone-8 special-characters isolatedstorage


    【解决方案1】:

    我相信您正在寻找的是Input Scope。只需将输入范围设置为“文件名”。 有一些方法可以通过代码或外部参照表解决,但更优雅 (IMO) 只限制可以输入的内容。

    【讨论】:

    • 如果您希望您的用户输入文件名,那么您应该使用@TheBrain 建议的预防方法。不要去掉代码中的字符,然后更改文件名,而是首先阻止它们输入它们。为此目的而存在 InputScope
    • FilenameFullFilePath 输入范围允许用户输入无效字符,例如“\”、“/”、“?”、“
    • 那么我将如何实现这个输入范围呢?
    【解决方案2】:

    文件名中不能包含某些字符,例如<>| 等...您可以使用此方法删除文本框中的任何特殊字符

    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");
    }
    

    如果你想允许非字母数字字符,那么你可以有一个不允许的字符列表,并检查文件名中的任何字符是否存在于该列表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多