none
求处理字符串中取得通用字符匹配的字符的思路 RRS feed

  • 问题

  • 问题如下:

     现在有两个字符串

     分别是    1.   很雪白的*有很*火焰

                 2.   很雪白的星火有很大的火焰

     然后我要将第一个 * 通配符匹配到的 星火 ,及第二个 * 通配符匹配到 大的 

     给存入数组里面。

     

     目前小弟先将这个问题变简单一点

     我先把字符串拆得更简洁

     1.   很雪白的*

     2.   很雪白的星火

     然后一样将 * 通配符存进数组 以下是我编写的代码:

    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 如上这样问题就比较好解 

    请各位大大提供点思路给小弟 感激不尽

     

    2012年8月18日 8:48

答案

  • 先用String的Split方法分割字符串,然后取出剩余字符串即可:

    Sub Main()
            Dim a As String = "很雪白的*有很*火焰"
            Dim b As String = "很雪白的星火有很大的火焰"
            '分离字符串
            Dim strings() As String = a.Split(New String() {"*"}, StringSplitOptions.RemoveEmptyEntries)
            '动态添加*
           
            For Each s As String In strings
                b = b.Replace(s, "*")
            Next
            '保存结果
            strings = b.Split(New String() {"*"}, StringSplitOptions.RemoveEmptyEntries)
            '输出
            For Each s In strings
                Console.WriteLine(s)
            Next
        End Sub

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 向恩 2012年8月19日 6:02
    2012年8月19日 5:09
    版主

全部回复