Этот текст должен быть разбит, как на картинке ниже. Я пытался использовать регулярные выражения, но не получил очень хороший результат:
ص 6: 9 ؛ 17: 1 ؛ 24: 40 ؛ 2 مل 20: 3 ز زز 128: 1 ؛ مي 6: 8 ؛ ملا 2:> 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
Этот код, который я использовал и отредактируйте его несколько раз
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
Но результат не так, как мне нужно.