-1

2つのパラメーターをCallSome()に渡す必要があります

string.Format("CallSome({0},'{1}');", someId, someName);

しかし、someNameは、スペースがあるこの種の値に対しては機能しませんでした。お気に入り

'123'、'name'で動作します

しかし、これは「私の名前」ではありません。

4

2 に答える 2

0

これを試して

string.Format( "CallSome({0}、'' {1}'');"、someId、someName);

startとendに余分な一重引用符を入れて、一重引用符をエスケープする必要があります。

于 2012-10-30T07:30:38.107 に答える
0

C# を使用していて、これを ASP.NET または同様の Web テクノロジで Web 応答に出力したいと仮定すると、コードは機能するはずです。

たとえば、someId= 123 とsomeName= "word, word" の場合:

CallSome(123,'word, word');

Web ページで取得している出力コードを確認するだけで、真実が明らかになります。


一重引用符で囲まれた場所に挿入されている場合を除きます。

たとえば、someId= 123 とsomeName= "word, word" の場合:

var something = 'CallSome(123, 'word, word')';

したがって、ブラウザに関する限り、最初の一重引用符はテキストの終わりのように見えます。その場合、次のように二重引用符を使用する必要があります。

var something = "CallSome(123, 'word, word')";

またはこれ:

var something = 'CallSome(123, "word, word")';

または、一重引用符をエスケープできます。

var something = 'CallSome(123, \'word, word\')';

引数に引用符がない限り。

たとえば、someId= 123 とsomeName= "word' word" を指定すると、次のようになります。

var something = 'CallSome(123, 'word' word')';

繰り返しになりますが、ブラウザーに関する限り、最初の一重引用符はテキストの終わりのように見えます。その場合は、引用符を一方向にエスケープする必要があるため、もう少し複雑です。

var something = "CallSome(123, 'word\' word')";

または別の:

var something = 'CallSome(123, "word\' word")';

改行、javascript コメントがない限り、または引数に他に何があるかわかりません。

それらを持っていないだけです!


さて、C# では引用符をエスケープする必要があります。二重引用符を出力するには、次のようにします。

string.Format("CallSome({0},\"{1}\");", someId, someName);

それは与える:

CallSome(123,"word, word");

一方、一重引用符を本当に使用する必要がある場合 (バグを考えるとそうは思わない)、出力 JavaScript でそれらをエスケープする必要があります。

string.Format("CallSome({0},\\'{1}\\');", someId, someName);

それは与える:

CallSome(123, \'word, word\');

上記の例のように、引用符で囲まれた文字列の一部であれば問題ありません。

var something = 'CallSome(123, \'word, word\')';
于 2012-10-30T07:45:43.333 に答える