zoukankan      html  css  js  c++  java
  • 给.NET的string类添加一个命令行参数分解的扩展

    把一个把字符串分解成命令行参数是很常见的操作,一直很纳闷为什么.net没有提供相关的功能,自己写一个又觉得麻烦。幸好windows提供了一个API来干这个事情。不过这个API调用起来颇为麻烦,google了一下才找到方法。代码贴上来,方便后来人使用。

    代码如下:

    using System;
    using System.Runtime.InteropServices;
    using System.Text;

    ///
     <summary>
    /// string extension for split command line to string[]
    /// </summary>
    public static class CmdLineExtension
    {

        
    public static string[] SplitArgs(this string cmd)
        {
            
    int count;
            var ret 
    = CommandLineToArgvW(cmd, out count);

            
    if(ret == IntPtr.Zero)
                
    throw new ArgumentException("Unable to split argument.");
            
    try
            {
                var results 
    = new string[count];

                
    for(int i = 0; i < count; i++)
                    results[i] 
    = Marshal.PtrToStringUni(Marshal.ReadIntPtr(ret, i * IntPtr.Size));
                
    return results;
            }
            
    finally
            {
                LocalFree(ret);
            }
        }

        [DllImport(
    "shell32.dll", SetLastError = true)]
        
    static extern IntPtr CommandLineToArgvW([MarshalAs(UnmanagedType.LPWStr)]string cmd, out int count);

        [DllImport(
    "kernel32.dll")]
        
    static extern IntPtr LocalFree(IntPtr mem);
    }
  • 相关阅读:
    6 开发工具IDE-pycharm
    5 循环控制
    react native 遇到的坑
    代码缩略图插件
    JEECMS-自定义标签[list]
    Jeecms自定义标签用法[单个内容]
    ReactNative环境搭建
    修改浏览器accept使支持@ResponseBody
    [转]MyEclipse for Spring2014破解
    js正则验证手机号
  • 原文地址:https://www.cnblogs.com/Hybird3D/p/1933768.html
Copyright © 2011-2022 走看看