首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于数组中的字符串拆分字符串

基于数组中的字符串拆分字符串
EN

Stack Overflow用户
提问于 2017-04-11 17:54:24
回答 3查看 68关注 0票数 1

给一根绳子..。

代码语言:javascript
复制
M0 Apple Sauce M1 Peanut Butter M2 Porcupine M3 Quesadilla M4 Margarita

我怎么能把那根绳子分割成..。

代码语言:javascript
复制
M0 Apple Sauce
M1 Peanut Butter
M2 Porcupine
M3 Quesadilla
M4 Margarita 

是否有方法将M0, M1,..., M4放入数组中,然后使用该数组拆分字符串?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-11 18:10:55

完全归功于Wiktor Stribizew

代码语言:javascript
复制
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 Class

Regex解释:

regex字符串正在拆分方法中使用,这意味着regex模式的目标是找到要拆分的字符串中的位置。

正则表达式字符串!?^的第一段简单地断言在0位置没有“匹配”。我们在0位置有一个匹配,但是我们不希望输出中有一个0长度的字符串,所以我们使用这个规定。我将分解第二个子表达式?=\bM\d+\b

  • ?=用于表示“我们在光标前面寻找符合以下模式的匹配”--而不使用文本
  • \b补充说,匹配必须发生在一个字母数字字符旁边的非字母数字字符(在本例中,总是一个空格和一个M);这是任何‘单词边界’。
  • M确实是M的文字字符匹配。
  • \d匹配任何十进制数字
  • +意味着在这一点上,一行中可能有任意数量的十进制数字(一个或多个十进制数字)。
  • 最后一个\b详细说明数字以另一个单词边界结尾。
票数 3
EN

Stack Overflow用户

发布于 2017-04-11 18:12:03

使用Regex.Split方法分割具有正则表达式的部件。

代码语言:javascript
复制
    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玛格丽塔

票数 1
EN

Stack Overflow用户

发布于 2017-04-12 01:07:32

Regex对于这种不稳定的东西是一个很好的答案。但如果你不喜欢Regex还有其他方法。Step关键字可以做到这一点。

代码语言:javascript
复制
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)

只需记住,确保数据总是成对的,并且每个元素都由一个空格分隔。

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43353040

复制
相关文章

相似问题

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