您的位置:新葡亰496net > 奥门新萄京娱乐场 > 不能用于文件名的字符,上传代码

不能用于文件名的字符,上传代码

发布时间:2019-09-27 13:45编辑:奥门新萄京娱乐场浏览(122)

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

    本文告诉大家一个特殊的做法,可以修改一个字符串常量

    我找到一些把字符串首字符大写的方法。

    博客园作为博客备份,博客会更新一份在博客园

    博客园作为博客备份,博客会更新一份在博客园

    图片 1

    我们来写一个简单的程序,把一个常量字符串输出

    假如需要把字符串 "red" 转换为 "Red",把 "red house" 转为 "Red house" 或者单词的第一个大写,下面就是我从网上看到的技术。

    CodePlex是微软开源项目网站,有很多人都在上面传代码,我们也可以上传自己的代码

    CodePlex是微软开源项目网站,有很多人都在上面传代码,我们也可以上传自己的代码

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

            private const string str = "lindexi";
            static void Main(string[] args)
            {
                Foo();
                Console.WriteLine(str);
            }
    
    public static string FirstCharToUpper(string input){    if (String.IsNullOrEmpty        throw new ArgumentException("ARGH!");    return input.First().ToString().ToUpper()   input.Substring;}
    

    注册

    我们可以用微软账号注册,填写用户名、密码,很快就好。

    注册

    我们可以用微软账号注册,填写用户名、密码,很快就好。

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

    其中的 Foo 是其他的函数,大家可以猜到输出是 lindexi ,但是,实际上把Foo调用函数添加之后,输出是 Lindexi 被大写了。那么这时 Foo 做了什么?

    这个方法就是拿到第一个字符,然后加上后面的字符,可以看到这个方法需要三个字符串在内存。

    新建项目

    去 选Creat Project

    图片 2

    填写标题、域名、选择git上传

    图片 3

    创建

    新建项目

    去 选Creat Project

    图片 4

    填写标题、域名、选择git上传

    图片 5

    创建

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

    Foo 做的就是
    C# 字符串首字符大写

    public string FirstLetterToUpper(string str){    if (str == null)        return null;    if (str.Length > 1)        return char.ToUpper   str.Substring;    return str.ToUpper();}
    

    上传代码

    点击 Source Code

    图片 6

    点击Clone

    就得到Git地址,在自己项目,上传

    git remote add codeplex https://git01.codeplex.com/lindexiuwp   这里的地址是你自己地址
    
    git push codeplex master
    

    就可以在代码看到

    上传代码

    点击 Source Code

    图片 7

    点击Clone

    就得到Git地址,在自己项目,上传

    git remote add codeplex https://git01.codeplex.com/lindexiuwp   这里的地址是你自己地址git push codeplex master
    

    就可以在代码看到

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

            public static unsafe void Foo()
            {
                fixed (char* ptr = str)
                {
                    *ptr = char.ToUpper(*ptr);
                }
            }
    

    这个方法也是需要两个字符串。

    Page

    不能用于文件名的字符,上传代码。我们需要让别人知道我们项目,需要写一个Page,他的语法垃圾,我不想说,大家自己去学。

    ! Uwp
    
    常用代码和控件
    
    !! 控件
    
     - [url:白天黑夜按钮|https://github.com/lindexi/UWP/blob/master/uwp/control/NightDayThemeToggleButton]
    
     [image:http://7xqpl8.com1.z0.glb.clouddn.com/fc7733af-8526-44d2-84b9-99b41ef99f4a20161212105727.jpg]
    
     - [url:进度条|https://github.com/lindexi/UWP/blob/master/uwp/control/Progress]
    
     [image:http://img.blog.csdn.net/20160815151046014]
    
     - [url:变大数字颜色按钮|https://github.com/lindexi/UWP/blob/master/uwp/control/RountGradualFigure]
    
     [image:http://7xqpl8.com1.z0.glb.clouddn.com/RountGradual.gif]
    
    !!! 图
    
     - DataGrid(没做)
    
    !! 软件
    
     - [url:win10 uwp 水印图床|https://github.com/lindexi/UWP/blob/master/uwp/control/BitStamp]
    
       参见 :[url:win10 uwp 水印图床|https://github.com/lindexi/UWP/blob/master/uwp/control/BitStamp/【广告】win10 uwp 水印图床 含代码.md]
    
       [url:安装|ms-windows-store://pdp/?productid=9nblggh562r2]https://www.microsoft.com/store/apps/9nblggh562r2
    
    !! 代码
    
     - [url:DetailMaster|https://github.com/lindexi/UWP/blob/master/uwp/src/DetailMaster]
    
     [image:http://img.blog.csdn.net/20160806130438076]
    
     - [url:图床|https://github.com/lindexi/UWP/blob/master/uwp/src/Imageshack]
    
       图床是把图片上传到云,然后获取图片链接的开发包,我将繁琐的过程写成一个简单的类。
       上传的服务器现在有[url:sm.ms|https://sm.ms/]和[url:七牛图床|http://www.qiniu.com/]。其中[url:七牛sdk UWP|https://github.com/lindexi/UWP/blob/master/uwp/src/Imageshack/cloundes],
       我只有简单文件上传,好多还没写。代码是从其他大神改出
    
       七牛图床上传到Nuget,搜索`lindexi.uwp.ImageShack.Thirdqiniucs`或
       控制台`Install-Package lindexi.uwp.ImageShack.Thirdqiniucs`
    
    
     - [url:显示svg|https://github.com/lindexi/UWP/blob/master/uwp/src/ScalableVectorGraphic]
    
     - [url:SplitView|https://github.com/lindexi/UWP/blob/master/uwp/src/SplitView]
    
       汉堡菜单
    
     - [url:ViewModel|https://github.com/lindexi/UWP/blob/master/uwp/src/ViewModel]
    
     - [url:隐私策略|https://github.com/lindexi/UWP/blob/master/uwp/src/隐私策略]
    
     - [url:径向规|https://github.com/lindexi/UWP/blob/master/uwp/src/RadialGauge]
    
     - 图片存放本地
    
       输入Uri打开,第一次从网络打开,之后在本地打开。
    
       先判断本地存在图片,不存在就从网络下载
    
       `BitmapImage img = await ImageStorage.GetImage(uri);`
    
       上传到Nuget,可以搜索`lindexi.uwp.src.ImageStorage `或控制台
       `Install-Package lindexi.uwp.src.ImageStorage`
    
    ! English
    
    Some controls and common codes
    

    参见

    图片 8
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

    Page

    我们需要让别人知道我们项目,需要写一个Page,他的语法垃圾,我不想说,大家自己去学。

    ! Uwp常用代码和控件!! 控件 - [url:白天黑夜按钮|https://github.com/lindexi/UWP/blob/master/uwp/control/NightDayThemeToggleButton] [image:http://7xqpl8.com1.z0.glb.clouddn.com/fc7733af-8526-44d2-84b9-99b41ef99f4a20161212105727.jpg] - [url:进度条|https://github.com/lindexi/UWP/blob/master/uwp/control/Progress] [image:http://img.blog.csdn.net/20160815151046014] - [url:变大数字颜色按钮|https://github.com/lindexi/UWP/blob/master/uwp/control/RountGradualFigure] [image:http://7xqpl8.com1.z0.glb.clouddn.com/RountGradual.gif]!!! 图 - DataGrid!! 软件 - [url:win10 uwp 水印图床|https://github.com/lindexi/UWP/blob/master/uwp/control/BitStamp]   参见 :[url:win10 uwp 水印图床|https://github.com/lindexi/UWP/blob/master/uwp/control/BitStamp/【广告】win10 uwp 水印图床 含代码.md]   [url:安装|ms-windows-store://pdp/?productid=9nblggh562r2]https://www.microsoft.com/store/apps/9nblggh562r2!! 代码 - [url:DetailMaster|https://github.com/lindexi/UWP/blob/master/uwp/src/DetailMaster] [image:http://img.blog.csdn.net/20160806130438076] - [url:图床|https://github.com/lindexi/UWP/blob/master/uwp/src/Imageshack]   图床是把图片上传到云,然后获取图片链接的开发包,我将繁琐的过程写成一个简单的类。   上传的服务器现在有[url:sm.ms|https://sm.ms/]和[url:七牛图床|http://www.qiniu.com/]。其中[url:七牛sdk UWP|https://github.com/lindexi/UWP/blob/master/uwp/src/Imageshack/cloundes],   我只有简单文件上传,好多还没写。代码是从其他大神改出   七牛图床上传到Nuget,搜索`lindexi.uwp.ImageShack.Thirdqiniucs`或   控制台`Install-Package lindexi.uwp.ImageShack.Thirdqiniucs` - [url:显示svg|https://github.com/lindexi/UWP/blob/master/uwp/src/ScalableVectorGraphic] - [url:SplitView|https://github.com/lindexi/UWP/blob/master/uwp/src/SplitView]      汉堡菜单 - [url:ViewModel|https://github.com/lindexi/UWP/blob/master/uwp/src/ViewModel] - [url:隐私策略|https://github.com/lindexi/UWP/blob/master/uwp/src/隐私策略] - [url:径向规|https://github.com/lindexi/UWP/blob/master/uwp/src/RadialGauge] - 图片存放本地      输入Uri打开,第一次从网络打开,之后在本地打开。   先判断本地存在图片,不存在就从网络下载   `BitmapImage img = await ImageStorage.GetImage;`   上传到Nuget,可以搜索`lindexi.uwp.src.ImageStorage `或控制台   `Install-Package lindexi.uwp.src.ImageStorage`! EnglishSome controls and common codes
    

    参见

    图片 9
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

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

    虽然出现了问题,但是找到问题很简单,如果这时需要做一个安全有关的。让别人看到源代码也不知道怎么使用,那么就可以使用这个科技,下面就是显示技术的时候

    下面的方法大概大家比较少会去发现,就是 CultureInfo 的方法

    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.
    

    我把 Foo 做一些修改,把 str 变量去掉,这样大家就难以通过搜索变量引用找到了这个函数。但是我在其他的某个地方使用了这个常量字符串,于是就把上面的 str 修改为 "lindexi" 。大家也许会想,这是两个变量,对他做什么修改也不会对之前的 str 有什么影响。实际上,请跑一下下面的代码。

    CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str.ToLower;
    

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

            public static unsafe void Foo()
            {
                fixed (char* ptr = "lindexi")
                {
                    *ptr = char.ToUpper(*ptr);
                }
            }
    

    这个方法是比较好方法,假如我输入"red house" 那么就会转换为 "Red House"

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

    这时输出 str 结果是 Lindexi ,因为编译器把相同的常量视为同一个地址,这样修改一个地方的常量就可以修改其他地方的。所以可以写的是一个常量,实际上这个常量在另一个地方被修改。

    上面的方法还可以使用这个方法

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

    如果我代码很多,在某个地方使用了反射,反射一个方法,这个方法是修改一个常量的值,常量是写自己写的,没有引用。这时可以发现代码执行就可以更改之前的字符串值。实际上不只字符串,其它的常量也可以修改。多使用这些技术,可以让看代码的人成为强大的杀人狂。

    CultureInfo("en-US").TextInfo.ToTitleCase("red house");
    
            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();
            }
    

    这个方法是不推荐在一般情况使用,因为谁都不能说没有其他地方使用一样的字符串。

    如果需要使用拼接,可以使用这个方法

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

    欢迎大家访问我搭建的博客 C# 谁改了我的代码 我自己搭建的博客会不断更新

    s.Remove.ToUpper()   s.Substring 
    
    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 '':
                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();
    }
    

    图片 10
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

    上面这个方法不会把 "red house" 转换为 "Red House"

    上面的代码是jnm2 大神写的

    下面给大家一个性能比较好的方法

    参见:Information about the characters that you cannot use in site names, folder names, and file names in SharePoint

            char[] a = s.ToCharArray();        a[0] = char.ToUpper;        return new string;
    

    c# - How to make a valid Windows filename from an arbitrary string

    如果需要很多字符串都这样把第一个大写,可以使用下面方法

    我搭建了自己的博客 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

    string str = "red house";            Console.WriteLine(System.Text.RegularExpressions.Regex.Replace(str, "^[a-z]", m => m.Value.ToUpper;
    

    如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

    和上面方法一样写法,可以使用另外的函数

    图片 11
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

    Regex.Replace(str, @"^w", t => t.Value.ToUpper;
    

    如果希望有最好的速度,那么请用下面方法

    public static unsafe string ToUpperFirst(this string str){    if (str == null) return null;    string ret = string.Copy;    fixed (char* ptr = ret)         *ptr = char.ToUpper;    return ret;}
    

    图片 12

    本文同时放在我自己搭建的博客C# 字符串首字符大写

    图片 13
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。

    本文由新葡亰496net发布于奥门新萄京娱乐场,转载请注明出处:不能用于文件名的字符,上传代码

    关键词:

上一篇:新葡亰496netpython入门学习,Python开发基础

下一篇:没有了