1

这是最奇怪的事情,我不知道这是怎么发生的。我的 asp.net 网站上的用户如何创建多行字符串但未使用正常的回车或换行。

我试图弄清楚这是如何实现的。

它是一个多行文本框,当您按下回车键时,它会转到一个新行。

在 aspx 代码中,我使用以下代码将字符串分解为数组并计算数组中的行数。

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

 Return Array.Length

在大多数正常情况下,当有换行时,它会进入下一行,输入 CR/LF,代码会将字符串分成新行。同样按回车键会创建一个新行,拆分功能用于分隔行并根据行数创建维度数组。

只有一个用户知道如何使用非标准 CRLf 创建新行。它导致 vbnewline 的拆分无法捕获并将字符串分解为数组。我以前从未见过这种情况。

我不是在问如何解决这个问题。我想我很清楚如何通过正则表达式对字符串进行额外检查来防止这种情况发生。

我完全不明白这是怎么发生的。如果你以前见过这个或者知道这是如何实现的,那么我很想听听你的想法。

以下是我尝试过的事情: 将 HTML 插入字符串(不起作用):手动在字符串中添加换行符,例如 \r,并使用十六进制代码来混淆拆分功能(不起作用):将脚本注入字符串(不起作用):使用 access 和 excel 创建字符串,而不使用标准 CRLF 以及复制和粘贴(不起作用)。

我有 5 年的编码经验并且完全感兴趣。你能解决这个问题吗?

4

1 回答 1

0

你在什么操作系统上?VbNewline 是平台相关的——如果你的服务器在 Windows 上,这意味着 \r\n。由于您正在制作一个 Web 应用程序,因此可能并非所有用户都在 Windows 上——并且不同的操作系统记录换行符的方式不同——它们很可能是 VbCrLf (\r\n)、VbLf (\n) 或VbCr (\r),具体取决于您的用户是在 Windows、Linux 还是 Mac 上。您必须检测用户正在传输哪一个,并根据适当的字符组合拆分您的数组。

Karl Nicoll 的这个答案对于遇到非常类似问题的用户有更多有用的信息。

于 2013-05-07T14:16:44.403 回答