求处理字符串中取得通用字符匹配的字符的思路
问题如下:
现在有两个字符串
分别是 1. 很雪白的*有很*火焰
2. 很雪白的星火有很大的火焰
然后我要将第一个 * 通配符匹配到的 星火 ,及第二个 * 通配符匹配到 大的
给存入数组里面。
目前小弟先将这个问题变简单一点
我先把字符串拆得更简洁
1. 很雪白的*
2. 很雪白的星火
然后一样将 * 通配符存进数组 以下是我编写的代码:
- VB.NET code
Sub ppk1() Dim 字符 As String = "很雪白的*" Dim mach As String = "很雪白的星火" Dim star As New ArrayList Dim st As String = Nothing If 字符 = "*" Then star.Add(mach) Else For Each s As String In 字符 If s.Contains("*") Then star.Add(mach.Substring(st.Length, mach.Length - st.Length)) End If st += s Next End If Me.RichTextBox1.Text = star(0).ToString End Sub只有一个通配符的话 还OK 但两个通配符以上 这里我就稍微头脑卡住了 这边的思路不知该如何设计
我在想有没有办法将字符串拆成如上一样只变的只有一个通配符 和 mach 如上这样问题就比较好解
请各位大大提供点思路给小弟 感激不尽
[解决办法]
直接找到 * 然后把 * 修改为 (.*) 再用正则匹配就能把分组弄出来嘛。
- VB.NET code
Dim strMatch As String = "很雪白的*有很*"Dim strSource As String = "很雪白的星火有很大的火焰"strMatch = strMatch.Replace("*", "(.*)")Dim regex = New System.Text.RegularExpressions.Regex(strMatch)Dim matchResult = regex.Match(strSource)If matchResult.Success Then For Each g As System.Text.RegularExpressions.Group In matchResult.Groups If g.Index <> 0 Then Console.WriteLine(g.Value) End If NextEnd IfConsole.Read()