我有一个程序,您可以在其中写笔记并将它们保存在 .txt 文件中。每个笔记都有一个标题和一个文本。注释的标题是不带“.txt”后缀的文件名。所以在我的程序中有一个包含所有笔记标题的列表框,点击标题你可以阅读笔记。我的问题是我不能用这些字符写标题: \ / : * ?" < > | 因为它们不允许出现在文件名中。
我该如何解决这个问题?我认为一个解决方案可能是创建一个仅包含文件名的新 .txt 文件,然后根据行号将文件名与注释相关联。
有更简单的解决方案吗?如果是的话,你能告诉我吗?谢谢!
我有一个程序,您可以在其中写笔记并将它们保存在 .txt 文件中。每个笔记都有一个标题和一个文本。注释的标题是不带“.txt”后缀的文件名。所以在我的程序中有一个包含所有笔记标题的列表框,点击标题你可以阅读笔记。我的问题是我不能用这些字符写标题: \ / : * ?" < > | 因为它们不允许出现在文件名中。
我该如何解决这个问题?我认为一个解决方案可能是创建一个仅包含文件名的新 .txt 文件,然后根据行号将文件名与注释相关联。
有更简单的解决方案吗?如果是的话,你能告诉我吗?谢谢!
单独索引文件的优点是您可以轻松获取所有标题。缺点是它可能会过时,除非您非常小心,并且您限制了对底层文件系统的访问。
就个人而言,我可能很想将每个文本文件的第一行作为标题,并将文件名作为经过清理的标题。这意味着您可以非常快速地显示非常接近实际标题的内容,但是您可以选择异步循环文件并更新实际标题(如果它们不同)......即如果用户输入的标题是“what < do ! 我愿意?” 他们可能会非常简短地看到“我要做什么”,很快就会被“做什么<做什么!我做什么?”所取代。- 并且没有索引文件损坏的风险。
您可以使用独特的字符串维护特殊字符字典,例如:
Dictionary<string, string> specialCharDictionary = new Dictionary<string, string>();
specialCharDictionary.Add("\\", "Slash");
specialCharDictionary.Add("/", "BSlash");
//....
然后使用它来创建和访问文件名。
您可以对文件名进行base-64 编码,也可以将文件设为 XML 而不是纯文本,并对实体进行编码。
标题是用户给的吗?如果是这样,有一个简单的方法来验证标题。只需检查给定的标题是否包含被禁止的字符之一。然后您可以删除它们并使用剥离的结果,或者您可以向用户显示一条错误消息,说明这些字符是不允许的。
这个问题提供了有关在字符串中查找特殊字符的答案。希望这可以帮助!