【问题标题】:Validating and storing comma separated values验证和存储逗号分隔值
【发布时间】:2013-04-24 07:23:50
【问题描述】:

我有一个拆分字符串,

 string s = Console.ReadLine();
 string[] values = s.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

s 应该接收这样的输入:

字符串文字、数值、数值、数值或字符串文字

我意识到所有这些输入都是作为字符串读取的,但我正在尝试验证字符串中的数字(检查 >0),并将字符串中的每个值分配给一个变量。解决此问题的最佳方法是什么?

【问题讨论】:

  • “使用带有 Equals() 方法的 find 方法最好的方法是什么?” ==> 我不明白这个问题。
  • 如果一个数字 > 0 你想做什么?
  • StringSplitOptions.RemoveEmptyEntries 也会取消您的验证。示例:string,1,,' will result in a 2 element array - so you'd have to look at the original string to see what was missing. StringSplitOptions.None` 会是更好的选择(我相信这是默认设置)

标签: c# string csv validating


【解决方案1】:

您正在寻找特定的模式。我建议使用正则表达式,然后获取数字组 - 并进行 > 0 验证检查。

【讨论】:

  • RegEx 对于这样的事情来说太过分了,IMO。
【解决方案2】:
string s = Console.ReadLine();
string[] values = s.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
string stringValue0 = values[0];
int numericValue1 = int.Parse(value[1]); // Assuming the value is an valid interger.
int numericValue2 = int.Parse(value[2]); // Assuming the value is an valid interger.
int numericvalue3;
string stringValue3;
if (!int.TryParse(values[3], out numericValue3) // Trying to convert the text to an interger. If it fails, assign it to the stringValue3.
    stringValue3 = values[3];

您始终可以使用int.TryParse 来验证文本是否包含数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-25
    • 2018-03-11
    • 2011-05-30
    相关资源
    最近更新 更多