首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修改代码以拆分提供的文本?

如何修改代码以拆分提供的文本?
EN

Stack Overflow用户
提问于 2020-02-18 01:24:18
回答 1查看 33关注 0票数 0

此文本需要像下面的图像一样被拆分。我尝试使用正则表达式,但没有得到很好的结果:

ص6‏:9؛17‏:1؛24‏:40؛2مل20‏:3؛مز128‏:1؛مي6‏:8؛؛6

结果需要是这样的:

ص6‏:9 *ص‏-6-9

17‏:1 *‏ص- 17 -1

24‏:40 *‏ص- 24 - 40

2مل20‏:3 * 2مل‏-20-3

مز128‏:1 *مز‏-128-1

مي6‏:8 *مي‏-6-8

ملا2‏:6 *ملا‏-2-6

结果从这个字符串中出来

ص6‏:9 *ص‏-6-9

17‏:1 *‏- 17 -1

24‏:40 *‏- 24 - 40

2مل20‏:3 *مل‏- 220 -3

مز128‏:1 *مز‏-128-1

مي6‏:8 *مي‏-6-8

ملا2‏:6 *ملا‏-2-6

这是我使用的代码,并对其进行了多次编辑

代码语言:javascript
复制
 Public Function SplitVerseCrossRefrence(Numbers As String, InputString As String) As String
    'RR = 0
    Dim Result As String = ""
    Dim OldBookId As String = ""
    Dim MyStr As New StringBuilder
    Dim WordList As New List(Of String)
    '
    Dim forbdin() As Char = {":", "-", ";", "،", "؛"}
    '
    Try
        If InputString.IndexOf("؛") > -1 Then
            WordList.AddRange(InputString.Split("؛").ToList())
        Else
            WordList.Add(InputString)
        End If
        '
        Result = "" 
        '
        For Each Word In WordList
            '
            Dim strArray As Char() = Word.ToCharArray
            '
            For xxx As Integer = 0 To strArray.Count - 1
                '
                Dim CleanText = strArray(xxx)
                '
                If IsNumeric(CleanText) = False Then
                    MyStr.Append(CleanText)
                Else
                    If MyStr.Length = 0 Then
                        MyStr.Append(CleanText)
                    End If
                End If
                '
            Next

            Dim MyItem As String = MyStr.ToString.Trim
            '
            For ss As Integer = 0 To forbdin.Count - 1
                MyItem = MyItem.Replace(forbdin(ss).ToString.Trim, String.Empty).Trim
            Next
            '
            If IsNumeric(MyItem.Trim) = False Or MyItem.Trim <> "" Then
                OldBookId = MyItem
            Else
                MyItem = OldBookId
            End If

            If MyItem.Length >= 2 Then
                OldBookId = MyItem
            Else
                MyItem = OldBookId
            End If
            '
            Dim MyChapter As New StringBuilder
            Dim ChapterArry() = Word.Split(":")(0).Trim.ToArray

            For xx As Integer = 0 To ChapterArry.Count - 1
                If xx >= 0 Then
                    If IsNumeric(ChapterArry(xx)) = True Then
                        MyChapter.Append(ChapterArry(xx))
                    End If
                End If
            Next
            '
            Dim VersesCheck = Word.Split(":")(1).Trim
            Dim VersesFrom, VersesTo
            '
            If VersesCheck.Contains("-") = True Then
                VersesFrom = VersesCheck.Split("-")(0)
                VersesTo = VersesCheck.Split("-")(1)
            ElseIf VersesCheck.Contains("،") = True Then
                VersesFrom = VersesCheck.Split("،")(0)
                VersesTo = VersesCheck.Split("،")(1)
            Else
                VersesFrom = VersesCheck
                VersesTo = 0
            End If
            '
            If MyItem = "ص" Then
                MyItem = Numbers.Split(".")(0)
            End If
            '
            Result = Result & Word & " * " & MyItem & " - " & MyChapter.ToString & " - " & VersesFrom & "<br />" & vbCrLf
            MyStr.Clear()
        Next
    Catch ex As Exception
        Result = InputString
    End Try
    Return Result
End Function

但是结果并不像我想要的那样。

EN

回答 1

Stack Overflow用户

发布于 2020-02-20 01:23:52

这个函数可以帮助我获得正确的结果。所以如果有人需要它

代码语言:javascript
复制
 Public Function SplitText(InputString As String) As String
    Dim Result As String = ""
    Dim OldBookId As String = ""
    Dim MyStr As New StringBuilder
    Dim MyChapter As New StringBuilder
    Dim WordList As New List(Of String)
    '
    Try
        '
        If InputString.IndexOf("؛") > -1 Then
            WordList.AddRange(InputString.Split("؛").ToList())
        Else
            WordList.Add(InputString)
        End If
        '
        Result = "" '"( "

        For Each Word In WordList

            Dim IsCheck As Boolean = False
            Dim A() As String = Word.Split(":")
            Dim AName As String = A(0).Trim
            Dim RevAName As String = StrReverse(AName)
            Dim strArray() As Char = RevAName.ToArray
            '
            For xxx As Integer = 0 To UBound(strArray)
                '
                'txtLog.AppendText(AscW(strArray(xxx)) & vbCrLf)
                '
                If AscW(strArray(xxx)) <> 8207 Then
                    If IsNumeric(strArray(xxx)) = True And IsCheck = False Then
                        'strArray.RemoveAt(xxx)
                        MyChapter.Append(strArray(xxx))
                    Else
                        IsCheck = True
                        MyStr.Append(strArray(xxx))
                    End If
                End If
                '
            Next
            '
            Dim MyItem As String = StrReverse(MyStr.ToString.Trim)
            '
            If MyItem <> "" Then
                OldBookId = MyItem
            Else
                MyItem = OldBookId
            End If
            '
            Dim VersesCheck = A(1)
            Dim VersesFrom, VersesTo
            '
            If VersesCheck.Contains("-") = True Then
                VersesFrom = VersesCheck.Split("-")(0)
                VersesTo = VersesCheck.Split("-")(1)
            ElseIf VersesCheck.Contains("،") = True Then
                VersesFrom = VersesCheck.Split("،")(0)
                VersesTo = VersesCheck.Split("،")(1)
            Else
                VersesFrom = VersesCheck
                VersesTo = 0
            End If
            '
            Result = Result & Word & " * " & MyItem & " - " & StrReverse(MyChapter.ToString) & " - " & VersesFrom & " - " & VersesTo & vbCrLf

            MyChapter.Clear()
            MyStr.Clear()
            IsCheck = False
            '
        Next

    Catch ex As Exception
        Result = InputString
    End Try
    '
    Return Result
    '
End Function
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60267591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档