在文本框中输入各种数据类型,并输入到一个Object数组中

Enter various data types in a text box and input them into an Object array

在文本框中输入各种数据类型,并输入到Object数组中

我想要一种能够让用户将各种数据类型键入 TextBox 的方法,例如:

“a”, 1, 1.5, “b”

然后用“,”分割成一个对象数组或列表。与此类似的东西,除了对象之外,所以我无法将它们识别为字符串、整数等。

String sample = textbox; 
String samples = sample.Split(new Char[] {','});
            foreach (var x in samples)

谢谢

这是一个两步过程。第 1 步是解析来自用户的 CSV 行,第 2 步是识别数字(我选择双精度)与纯文本。我更喜欢正则表达式,因为它们的灵活性(一旦学会)并且相信这两个步骤都可以使用正则表达式来解决。

如果您进行搜索,就会发现关于识别数字主题的整个 Whosebug 问题。您的要求似乎是一个基本要求,基于这种理解,我将使用正则表达式提供基本的数字与文本检查。 (注意它可以扩展到进一步限制可能性):

List<object> items = new List<object>();
string data = "a, 1, 1.5, b";

Regex.Matches(data, "[^,]+") // Get each object without a comma over the line.
     .OfType<Match>()
     .Select (mt => mt.ToString().Trim()) // Remove any whitespace (if any)
     .ToList()
     .ForEach(itm => items.Add(Regex.IsMatch(itm, "[a-zA-Z]")  ?          // Is it
                                            (object) itm :                // a string
                                            (object) Double.Parse(itm))); // a number

Console.WriteLine ( string.Join( " | ", items.Select (obj => obj.ToString())));
// Writes:
// a | 1 | 1.5 |  b

Console.WriteLine ( string.Join( ", ", items.Select (obj => obj.GetType())));
// Writes:
// System.String, System.Double, System.Double, System.String