0

後で入力のコマンドとして使用されるパラメーターに分離するために使用するこのリストがあります。

問題は、フィールドの 1 つがフリーテキストであり、ユーザーが書き込むことができることです。フリーテキストをフォーマットするか、ユーザーが誤って使用できないセパレーターを使用することを確認するにはどうすればよいですか? 現在、コマンドを区切るためにカンマを使用していますが、ユーザーがカンマを書いてソリューションを台無しにするのではないかと心配しています。

ここでのベストプラクティスは何ですか?

4

4 に答える 4

1

区切り文字として難解な/入力不可能な文字を選択するか、エスケープ文字を使用できます。

すなわち:

command|parameter, string  <- Esoteric character

また

command,parameter\, string <- Escape character

個人的には、単純なString.Split関数を引き続き使用できるため、難解な文字を選択します。ユーザーの入力をいつでもチェックして、区切り文字として使用している文字にパラメーターが含まれていないことを確認できます。

于 2013-03-19T07:43:09.547 に答える
0

CSVファイルのMIME標準では、コンマを含む可能性のあるCSVファイルを適切に作成する方法について説明しています。

  1. 値を二重引用符で囲みます
  2. 値の中に二重引用符がある場合は、それらを2倍にします

たとえば、次の値を使用してCSVファイルを作成するとします。

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

その場合、結果は次のようになります。

"Hello","Well, does this work?","I guess this ""kinda"" work"
于 2013-03-19T07:42:45.167 に答える
0

私が最終的に得たソリューションは次のようになります。3 つの難解な文字を使用して、ユーザー入力と混同されるリスクを最小限に抑えます。

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);
于 2013-03-20T07:27:28.147 に答える
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);
于 2013-03-19T07:35:40.443 に答える