首页>Program>source

我有一个字符串值,需要将其转换为用户定义的自定义类型.怎么做,请帮帮我。

public class ItemMaster
{
    public static ItemMaster loadFromReader(string oReader)
    {
        return oReader;//here i am unable to convert into ItemMaster type
    }
}
最新回答
  • 1月前
    1 #

    根据您的类型,有两种方法可以实现。

    首先是在您的类型中添加一个使用 String的构造函数   参数。

    public YourCustomType(string data) {
        // use data to populate the fields of your object
    }
    

    第二个是添加静态 Parse   方法。

    public static YourCustomType Parse(string input) {
        // parse the string into the parameters you need
        return new YourCustomType(some, parameters);
    }
    

  • 1月前
    2 #

    在用户定义的自定义类型上创建解析方法:

    public class MyCustomType
    {
        public int A { get; private set; }
        public int B { get; private set; }
        public static MyCustomType Parse(string s)
        {
            // Manipulate s and construct a new instance of MyCustomType
            var vals = s.Split(new char[] { '|' })
                .Select(i => int.Parse(i))
                .ToArray();
            if(vals.Length != 2)
                throw new FormatException("Invalid format.");
            return new MyCustomType { A = vals[0], B = vals[1] };            
        }
    }
    

    当然,提供的示例非常简单,但至少可以帮助您入门。

  • 1月前
    3 #

    Convert.ChangeType()   方法可能会帮助您。

    string sAge = "23";
    int iAge = (int)Convert.ChangeType(sAge, typeof(int));
    string sDate = "01.01.2010";
    DateTime dDate = (DateTime)Convert.ChangeType(sDate, typeof(DateTime));
    

  • 1月前
    4 #

    首先,您需要定义一种将类型转换为字符串时将遵循的格式。 一个简单的例子是社会保险号.您可以轻松地将其描述为正则表达式。

    \d{3}-\d{2}-\d{4}
    

    此后,您只需简单地逆转该过程.惯例是定义一个 Parse   方法和一个 TryParse   您的类型的方法.不同之处在于 TryParse   不会引发异常。

    public static SSN Parse(string input)
    public static bool TryParse(string input, out SSN result)
    

    现在,您实际上要执行的解析输入字符串的过程可以像您希望的那样复杂或简单.通常,您将标记输入字符串并执行语法验证.(例如:破折号可以到这里吗?)

    number
    dash
    number
    dash
    number
    

    这实际上取决于您要投入多少工作.这是如何标记字符串的基本示例。

    private static IEnumerable<Token> Tokenize(string input)
    { 
        var startIndex = 0;
        var endIndex = 0;
        while (endIndex < input.Length)
        {            
            if (char.IsDigit(input[endIndex]))
            {
                while (char.IsDigit(input[++endIndex]));
                var value = input.SubString(startIndex, endIndex - startIndex);
                yield return new Token(value, TokenType.Number);
            }
            else if (input[endIndex] == '-')
            {
                yield return new Token("-", TokenType.Dash);
            }
            else
            {
                yield return new Token(input[endIndex].ToString(), TokenType.Error);
            }
            startIndex = ++endIndex;
        }
    }
    

  • 1月前
    5 #

    对于实际的转换,我们需要查看其类结构.但是,其骨架如下所示:

    class MyType
    {
        // Implementation ...
        public MyType ConvertFromString(string value)
        {
            // Convert this from the string into your type
        }
    }
    

  • javascript:如何在不刷新页面的情况下更改浏览器URL
  • licensing:C#:查询FlexLM许可证管理器