给一根绳子..。
M0 Apple Sauce M1 Peanut Butter M2 Porcupine M3 Quesadilla M4 Margarita我怎么能把那根绳子分割成..。
M0 Apple Sauce
M1 Peanut Butter
M2 Porcupine
M3 Quesadilla
M4 Margarita 是否有方法将M0, M1,..., M4放入数组中,然后使用该数组拆分字符串?
发布于 2017-04-11 18:10:55
完全归功于Wiktor Stribizew
Imports System.Text.RegularExpressions
Public Class frmMain
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim stString As String = "M0 Apple Sauce M1 Peanut Butter M2 Porcupine M3 Quesadilla M4 Margarita"
Dim arrString() As String
arrString = Regex.Split(stString, "(?!^)(?=\bM\d+\b)")
For Each st As String In arrString
MessageBox.Show(st)
Next
End Sub
End ClassRegex解释:
regex字符串正在拆分方法中使用,这意味着regex模式的目标是找到要拆分的字符串中的位置。
正则表达式字符串!?^的第一段简单地断言在0位置没有“匹配”。我们在0位置有一个匹配,但是我们不希望输出中有一个0长度的字符串,所以我们使用这个规定。我将分解第二个子表达式?=\bM\d+\b
?=用于表示“我们在光标前面寻找符合以下模式的匹配”--而不使用文本\b补充说,匹配必须发生在一个字母数字字符旁边的非字母数字字符(在本例中,总是一个空格和一个M);这是任何‘单词边界’。M确实是M的文字字符匹配。\d匹配任何十进制数字+意味着在这一点上,一行中可能有任意数量的十进制数字(一个或多个十进制数字)。\b详细说明数字以另一个单词边界结尾。发布于 2017-04-11 18:12:03
使用Regex.Split方法分割具有正则表达式的部件。
Dim stringToSplit As String = "M0 Apple Sauce M1 Peanut Butter M2 Porcupine M3 Quesadilla M4 Margarita"
Dim stringParts = Regex.Split(stringToSplit, "(?!^)(?=\bM\d+\b)")
For i = 0 To stringParts.Length - 1
Console.WriteLine(stringParts(i))
Next此代码将产生以下输出:
M0苹果酱
M1花生黄油
M2豪猪
M3 Quesadilla
M4玛格丽塔
发布于 2017-04-12 01:07:32
Regex对于这种不稳定的东西是一个很好的答案。但如果你不喜欢Regex还有其他方法。Step关键字可以做到这一点。
Dim sText As String = "M0 Apple Sauce M1 Peanut Butter M2 Porcupine M3 Quesadilla M4 Margarita"
Dim split() As String = sText.Trim.Split(" ")
Dim sResult As String = String.Empty
For i = 0 To UBound(split) Step 2
sResult &= split(i) & " " & split(i + 1) & vbCrLf
Next
MsgBox(sResult)只需记住,确保数据总是成对的,并且每个元素都由一个空格分隔。
祝好运!
https://stackoverflow.com/questions/43353040
复制相似问题