【问题标题】:Enter various data types in a text box and input them into an Object array在文本框中输入各种数据类型并将它们输入到对象数组中
【发布时间】:2015-02-21 21:28:44
【问题描述】:

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

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

“a”, 1, 1.5, “b”

然后用“,”将它们分开,并将它们放入一个对象数组或列表中。与此类似的东西,除了对象,因此我能够将它们识别为字符串、int 等。

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

谢谢

【问题讨论】:

  • 共有三个操作,创建WPF文本框,消费数据和处理数据。你对这三个中的哪一个有问题?我建议您将问题限制为三个之一;对我来说,听起来您只需要帮助解析数据,而 WPF 文本框是辅助的,不需要定义问题。

标签: c# .net arrays wpf object


【解决方案1】:

这是一个两步过程。第 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2016-02-16
    相关资源
    最近更新 更多