请问如何详细解释C概念?

2026-05-08 21:082阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计729个文字,预计阅读时间需要3分钟。

请问如何详细解释C概念?

在Windows中,有些字符不能作为文件名,尝试重命名一个文件,输入/+/即可看到Windows提示的不可以作为文件名的字符。那些不能作为文件名的字符包括:波浪号(~)、数字符号(#)、空格等。

在 Windows 有一些字符是不能作为文件名,尝试重命名一个文件,输入/ 就可以看到windows 提示的不能作为文件名的字符

那么具体是包括哪些符号不能作为文件名?

  • Tilde (~)
  • Number sign (#)
  • Percent (%)
  • Ampersand (&)
  • Asterisk (*)
  • Braces ({ })
  • Backslash (\)
  • Colon (:)
  • Angle brackets (< >)
  • Question mark (?)
  • Slash (/)
  • Plus sign (+)
  • Pipe (|)
  • Quotation mark (")

上面这些字符不能用来文件名和文件夹名

而且在 windows 的要求,文件是需要有文件名的,虽然你也可以创建.file这样的文件,但是用户是难以自己输入这样的文件名。

之外还有一些文件名是保留,不能创建这样的文件名

CON, PRN, AUX, CLOCK$, NUL COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.

尝试新建一个文本,然后把他文件名命名为上面的任意一个,基本windows会说不能把文件命名

那么是不是把这些字符串拿出来判断?实际上微软已经做了这个了,因为在不同的系统,可能之后会添加新的字符串,所以最好不要自己写。

可以使用微软给的函数System.IO.Path.GetInvalidFileNameChars ,下面的代码可以直接使用

public static string MakeValidFileName(string text, string replacement = "_") { StringBuilder str=new StringBuilder(); var invalidFileNameChars = System.IO.Path.GetInvalidFileNameChars(); foreach (var c in text) { if (invalidFileNameChars.Contains(c)) { str.Append(replacement??""); } else { str.Append(c); } } return str.ToString(); }

如果确实需要显示文件名,请使用下面代码

public static string GetSafeFilename(string arbitraryString) { var invalidChars = System.IO.Path.GetInvalidFileNameChars(); var replaceIndex = arbitraryString.IndexOfAny(invalidChars, 0); if (replaceIndex == -1) return arbitraryString; var r = new StringBuilder(); var i = 0; do { r.Append(arbitraryString, i, replaceIndex - i); switch (arbitraryString[replaceIndex]) { case '"': r.Append("''"); break; case '<': r.Append('\u02c2'); // '˂' (modifier letter left arrowhead) break; case '>': r.Append('\u02c3'); // '˃' (modifier letter right arrowhead) break; case '|': r.Append('\u2223'); // '∣' (divides) break; case ':': r.Append('-'); break; case '*': r.Append('\u2217'); // '∗' (asterisk operator) break; case '\\': case '/': r.Append('\u2044'); // '⁄' (fraction slash) break; case '\0': case '\f': case '?': break; case '\t': case '\n': case '\r': case '\v': r.Append(' '); break; default: r.Append('_'); break; } i = replaceIndex + 1; replaceIndex = arbitraryString.IndexOfAny(invalidChars, i); } while (replaceIndex != -1); r.Append(arbitraryString, i, arbitraryString.Length - i); return r.ToString(); }

总结

以上所述是小编给大家介绍的C# 不能用于文件名的字符,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对易盾网络网站的支持!

请问如何详细解释C概念?

本文共计729个文字,预计阅读时间需要3分钟。

请问如何详细解释C概念?

在Windows中,有些字符不能作为文件名,尝试重命名一个文件,输入/+/即可看到Windows提示的不可以作为文件名的字符。那些不能作为文件名的字符包括:波浪号(~)、数字符号(#)、空格等。

在 Windows 有一些字符是不能作为文件名,尝试重命名一个文件,输入/ 就可以看到windows 提示的不能作为文件名的字符

那么具体是包括哪些符号不能作为文件名?

  • Tilde (~)
  • Number sign (#)
  • Percent (%)
  • Ampersand (&)
  • Asterisk (*)
  • Braces ({ })
  • Backslash (\)
  • Colon (:)
  • Angle brackets (< >)
  • Question mark (?)
  • Slash (/)
  • Plus sign (+)
  • Pipe (|)
  • Quotation mark (")

上面这些字符不能用来文件名和文件夹名

而且在 windows 的要求,文件是需要有文件名的,虽然你也可以创建.file这样的文件,但是用户是难以自己输入这样的文件名。

之外还有一些文件名是保留,不能创建这样的文件名

CON, PRN, AUX, CLOCK$, NUL COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.

尝试新建一个文本,然后把他文件名命名为上面的任意一个,基本windows会说不能把文件命名

那么是不是把这些字符串拿出来判断?实际上微软已经做了这个了,因为在不同的系统,可能之后会添加新的字符串,所以最好不要自己写。

可以使用微软给的函数System.IO.Path.GetInvalidFileNameChars ,下面的代码可以直接使用

public static string MakeValidFileName(string text, string replacement = "_") { StringBuilder str=new StringBuilder(); var invalidFileNameChars = System.IO.Path.GetInvalidFileNameChars(); foreach (var c in text) { if (invalidFileNameChars.Contains(c)) { str.Append(replacement??""); } else { str.Append(c); } } return str.ToString(); }

如果确实需要显示文件名,请使用下面代码

public static string GetSafeFilename(string arbitraryString) { var invalidChars = System.IO.Path.GetInvalidFileNameChars(); var replaceIndex = arbitraryString.IndexOfAny(invalidChars, 0); if (replaceIndex == -1) return arbitraryString; var r = new StringBuilder(); var i = 0; do { r.Append(arbitraryString, i, replaceIndex - i); switch (arbitraryString[replaceIndex]) { case '"': r.Append("''"); break; case '<': r.Append('\u02c2'); // '˂' (modifier letter left arrowhead) break; case '>': r.Append('\u02c3'); // '˃' (modifier letter right arrowhead) break; case '|': r.Append('\u2223'); // '∣' (divides) break; case ':': r.Append('-'); break; case '*': r.Append('\u2217'); // '∗' (asterisk operator) break; case '\\': case '/': r.Append('\u2044'); // '⁄' (fraction slash) break; case '\0': case '\f': case '?': break; case '\t': case '\n': case '\r': case '\v': r.Append(' '); break; default: r.Append('_'); break; } i = replaceIndex + 1; replaceIndex = arbitraryString.IndexOfAny(invalidChars, i); } while (replaceIndex != -1); r.Append(arbitraryString, i, arbitraryString.Length - i); return r.ToString(); }

总结

以上所述是小编给大家介绍的C# 不能用于文件名的字符,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对易盾网络网站的支持!

请问如何详细解释C概念?