Javascript文本按制表符划分问题多行单元格

问题描述

|| 我的网页中有一个奇怪的问题,特别是带有从用户那里获取剪贴板的文本区域元素。 用户执行CTRL + V;然后我创建了一个事件以通过事件KeyUp获取数据。 ...这很好... 但是,当我尝试按此文本区域的每个“行”进行划分时;开始问题... 输入可以类似于以下示例: 数据读取如下内容: Row1 [0] [HT] Row1 [1] [LF] \“ Row2 [0]注释行1 [LF] Row2 [0]注释行2 \” [HT] Row2 [1] 哪里:  [HT]表示{Tab}  [LF]表示{换行} 我用:
var myData = document.getElementById(\"TextAreaElement\").value;
var vArray = myData.split(/\\n/);
但是这个数组给我3行... 有人知道任何解决方案或替代方法吗?     

解决方法

        您将获得包含三行的文本,在换行符上将其拆分,并获得包含三项的数组。似乎可行。 :)现在,您需要做的是将每个项目都放在一个标签上(=split1ѭ)拆分。 [编辑] 不,现在我明白你的意思了。使用这种拆分方法将无法到达那里。您将不得不解析字符串。字段值可以包含一个回车,在这种情况下,它将用双引号引起来。因此,当您仍然在一组引号内时,就必须解析该字符串,并且不要将其拆分。     ,        关于\'。\'不匹配换行符的问题,在JS中,这样做的标准方法是
[\\S\\s]
,它将匹配任何内容。 看来您想为初学者做的所有事情都是通过制表符分割字符串,对吗?然后...
result = string.split(/\\t/)
然后,您将获得一个数组,其中每个行的数据都分开。请注意,这仅在您的数据中没有多余的错误标签时才有效。 无论使用哪种工具将信息放入剪贴板,在将其复制并由JS解析之前,实际上都应该进行一些转义。如果它不能执行此操作,那么实际上一切都可以进行-在那种情况下,您不能保证您的字符串不会包含双引号,制表符或任何其他可能用作分隔符的字符。     ,        好吧,我找不到使用某些正则表达式或javascript方法的方法(我相信可以做到)。我以另一种方式拆分信息。 我使用AJAX将此信息发送到服务器并在VB中执行拆分。 在简历中: 我得到最大列(由选项卡分割)。 获取并评估选项卡数组的每个值。 如果以双引号开头,请尝试查找双引号的结尾(在此之前,将中间的双引号替换为唯一的文本) 每次评估原始数组的一个项目时,我都会删除每个项目(始终评估项目0)... 如果找到新行(该行的最终行),则仅删除上一行的“最终列”的文本。 希望对同样问题的人有所帮助。干杯。 这是代码:
Public Function TEST(ByVal pText As String) As String
    Try
        Dim vText As String = pText

        Dim vArray As New ArrayList
        vArray.AddRange(vText.Split(vbNewLine))
        Dim vActualIndex As Integer = 0

        Dim vMaxColumns As Integer = 0

        For Each vArrayItem In vArray
            If vArrayItem.Split(vbTab).Length > vMaxColumns Then
                vMaxColumns = vArrayItem.Split(vbTab).Length
            End If
        Next

        Dim vActualArray(vMaxColumns - 1) As String
        vArray = New ArrayList
        vArray.AddRange(vText.Split(vbTab))

        Dim vLen As Integer = vArray.Count
        Dim vNewArray As New ArrayList

        vActualIndex = 0

        Do While vArray.Count <> 0
            If vArray(0).Split(vbNewLine).Length = 1 Then
                vActualArray(vActualIndex) = vArray(0)
                vActualIndex += 1
            Else
                If vArray(0).Split(vbNewLine)(0).ToString.StartsWith(\"\"\"\") Then
                    vArray(0) = Mid(vArray(0),2).Replace(\"\"\"\"\"\",\"*_IDIDIDUNIQUEID_*\")

                    If InStr(vArray(0),\"\"\"\" & vbNewLine) <> 0 Then
                        vActualArray(vActualIndex) = Mid(vArray(0),1,InStr(vArray(0),\"\"\"\" & vbNewLine) + 1)
                        vArray(0) = Mid(vArray(0),\"\"\"\" & vbNewLine) + 3)

                        vActualArray(vActualIndex) = vActualArray(vActualIndex).ToString.Replace(\"*_IDIDIDUNIQUEID_*\",\"\"\"\"\"\")
                        vArray(0) = vArray(0).ToString.Replace(\"*_IDIDIDUNIQUEID_*\",\"\"\"\"\"\")

                        vActualIndex += 1

                        GoTo Skip_remove
                    End If

                    vArray(0) = vArray(0).ToString.Replace(\"*_IDIDIDUNIQUEID_*\",\"\"\"\"\"\")
                    vActualArray(vActualIndex) = vArray(0)
                    vActualIndex += 1
                Else
                    vActualArray(vActualIndex) = vArray(0).Split(vbNewLine)(0)
                    vActualIndex += 1

                    vArray(0) = vArray(0).ToString.Substring(vArray(0).Split(vbNewLine)(0).ToString.Length + 2)
                    GoTo Skip_remove
                End If
            End If

            vArray.RemoveAt(0)
\'这是VB代码中的标签 跳过删除:
            If vActualIndex >= vMaxColumns Then
                vNewArray.Add(vActualArray)

                ReDim vActualArray(vMaxColumns - 1)

                vActualIndex = 0
            End If
        Loop
    Catch ex As Exception
        Return \"\"
    End Try
End Function