逗号分隔列表中的分隔符和自由文本字段

时间:2013-03-19 07:21:02

标签: c# .net string

我有这个列表,我用它来分隔成稍后在输入中用作命令的参数。

问题是其中一个字段是freetext并且可供用户写入。如何确保我格式化自由文本或使用不能被用户意外使用的分隔符?现在我使用逗号分隔命令,但我担心用户会写一个逗号并弄乱解决方案。

这里的最佳做法是什么?

4 个答案:

答案 0 :(得分:1)

您可以选择一个深奥/不可能输入字符作为分隔符,也可以使用转义字符。

即:

command|parameter, string  <- Esoteric character

command,parameter\, string <- Escape character

就个人而言,我会选择一个深奥的角色,因为你仍然可以使用简单的String.Split函数。您始终可以检查用户的输入,以确保他们没有包含您用作分隔符的字符的参数。

答案 1 :(得分:0)

您可以使用正则表达式。这是一个很棒的教程http://www.codeproject.com/Articles/9099/The-30-Minute-Regex-Tutorial

然后您可以执行以下操作,以验证用户输入:

var stringToTest = "abcd";
Regex testRegex = new Regex("[^0-9]");
var isMatch = textRegex.IsMatch(strNumber);

答案 2 :(得分:0)

The MIME standard for CSV files说明了如何正确构建可能包含逗号的CSV文件:

  1. 将值括在双引号内
  2. 如果值中有双引号,请将它们加倍
  3. 例如,假设您要构建具有以下值的CSV文件:

    Hello
    Well, does this work?
    I guess this "kinda" work
    

    然后结果将是:

    "Hello","Well, does this work?","I guess this ""kinda"" work"
    

答案 3 :(得分:0)

我最终得到的解决方案看起来像这样,它使用了三个深奥的字符来最小化与用户输入相混淆的风险。

return string.Format("true|~|eventEdit|~|{0}|~|{1}|~|{2}|~|{3}|~|{4}", variable,         variable, variable, variable, variable);

string[] stringSeparators = new string[] { "|~|" };
string[] parameters = PlanningTypeIcon.CommandArgument.ToString().Split(stringSeparators,    StringSplitOptions.None);