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

时间:2015-02-21 21:28:44

标签: c# .net arrays wpf object

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

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

“a”, 1, 1.5, “b”

然后将它们拆分为“,”并将它们放入Object数组或列表中。类似于此的东西,除了对象,所以我能够将它们识别为字符串,int等。

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

谢谢

1 个答案:

答案 0 :(得分:0)

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

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

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