1

これは最も奇妙なことであり、これがどのように起こっているのか理解できません。私のasp.net Webサイトのユーザーが複数行の文字列を作成しているが、通常のキャリッジリターンまたはラインフィードを使用していない方法.

これがどのように達成されているかを理解しようとしました。

これは複数行のテキスト ボックスであり、Enter キーを押すと新しい行に移動します。

aspx コードでは、次のコードを使用して文字列を配列に分割し、配列内の行を数えています。

 Dim text as String = txtMessage.Text.Trim
 Dim Array as String() = text.split(vbNewLine)

 Return Array.Length

ほとんどの通常の状況では、行が折り返されて次の行に移動し、CR/LF が入力され、コードによって文字列が新しい行に分割されます。また、Enterキーを押すと新しい行が作成され、分割機能が機能して行を分離し、行数に基づいて次元配列を作成します。

非標準のCRLfを使用して新しい行を作成しているユーザーが1人だけいます。vbnewline による分割が文字列をキャッチして配列に分割しない原因となっています。これが起こるのを見たことがありません。

これを修正する方法を尋ねているのではありません。正規表現を使用して文字列に追加のチェックを行うことで、これが起こらないようにする方法を考えていると思います。

これがどのように起こっているのか、私は完全に困惑しています。以前にこれを見たことがある場合、またはこれがどのように達成されるかについての考えがある場合は、ぜひご意見をお聞かせください.

HTML を文字列に挿入する (機能しませんでした): \r などの文字列に手動で改行を追加し、16 進コードを使用して分割機能を混乱させます (機能しませんでした): スクリプトを挿入します文字列(機能しませんでした):アクセスとExcelを使用して、標準のCRLFとコピーアンドペーストを使用せずに文字列を作成しました(機能しませんでした)。

私は 5 年間のコーディング経験があり、完全に興味をそそられています。これを解決できますか?

4

1 に答える 1

0

どのOSを使用していますか?VbNewline はプラットフォームに依存します。サーバーが Windows 上にある場合は、\r\n を意味します。Web アプリケーションを作成しているため、すべてのユーザーが Windows を使用しているわけではない可能性があります。また、OS によって改行の記録方法が異なります。VbCrLf (\r\n)、VbLf (\n)、またはVbCr (\r)、ユーザーが Windows、Linux、Mac のいずれを使用しているかによって異なります。ユーザーが送信しているものを検出し、適切な文字の組み合わせで配列を分割する必要があります。

Karl Nicoll からのこの回答には、非常によく似た問題を経験したユーザーにとってより有用な情報があります。

于 2013-05-07T14:16:44.403 に答える