vb6使用字符串提取所有匹配的标题

时间:2019-09-02 03:51:11

标签: vb6

我只想通过从字符串中搜索来提取所有标题,如果在多位置匹配,则所有匹配的标题都应添加到text2多行中。

因此请搜索字符串 sf2_06.bin ,它在下面的几个地方都匹配,因此应该带给我标题。
请记住,数据要大得多,
sf2j
sf2ja
sf2jc
我想知道是否有人可以向我展示如何完成此工作,所以非常感谢。

<game name="sf2j" cloneof="sf2" romof="sf2">
        <description>Street Fighter II - The World Warrior (Japan 911210)</description>
        <year>1991</year>
        <manufacturer>Capcom</manufacturer>
        <rom name="sf2_05.bin" merge="sf2_05.bin" size="524288" crc="ba529b4f" sha1="520840d727161cf09ca784919fa37bc9b54cc3ce"/>
        <rom name="sf2_06.bin" merge="sf2_06.bin" size="524288" crc="22c9cc8e" sha1="b9194fb337b30502c1c9501cd6c64ae4035544d4"/>
        <rom name="sf2_07.bin" merge="sf2_07.bin" size="524288" crc="4b1b33a8" sha1="2360cff890551f76775739e2d6563858bff80e41"/>
        <rom name="sf2_08.bin" merge="sf2_08.bin" size="524288" crc="57213be8" sha1="3759b851ac0904ec79cbb67a2264d384b6f2f9f9"/>
        <rom name="sf2_09.bin" merge="sf2_09.bin" size="65536" crc="a4823a1b" sha1="7b6bf59dfd578bfbbdb64c27988796783442d659"/>
        <rom name="sf2_14.bin" merge="sf2_14.bin" size="524288" crc="14b84312" sha1="2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e"/>
        <rom name="sf2_15.bin" merge="sf2_15.bin" size="524288" crc="2c7e2229" sha1="357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2"/>
        <rom name="sf2_16.bin" merge="sf2_16.bin" size="524288" crc="5e9cd89a" sha1="f787aab98668d4c2c54fc4ba677c0cb808e4f31e"/>
        <rom name="sf2_17.bin" merge="sf2_17.bin" size="524288" crc="b5548f17" sha1="baa92b91cf616bc9e2a8a66adc777ffbf962a51b"/>
        <rom name="sf2_18.bin" merge="sf2_18.bin" size="131072" crc="7f162009" sha1="346bf42992b4c36c593e21901e22c87ae4a7d86d"/>
        <rom name="sf2_19.bin" merge="sf2_19.bin" size="131072" crc="beade53f" sha1="277c397dc12752719ec6b47d2224750bd1c07f79"/>
        <rom name="sf2_24.bin" merge="sf2_24.bin" size="524288" crc="c1befaa8" sha1="a6a7f4725e52678cbd8d557285c01cdccb2c2602"/>
        <rom name="sf2_25.bin" merge="sf2_25.bin" size="524288" crc="994bfa58" sha1="5669b845f624b10e7be56bfc89b76592258ce48b"/>
        <rom name="sf2_26.bin" merge="sf2_26.bin" size="524288" crc="0627c831" sha1="f9a92d614e8877d648449de2612fc8b43c85e4c2"/>
        <rom name="sf2_27.bin" merge="sf2_27.bin" size="524288" crc="3e66ad9d" sha1="9af9df0826988872662753e9717c48d46f2974b0"/>
        <rom name="sf2_29a.bin" merge="sf2_29a.bin" size="131072" crc="bb4af315" sha1="75f0827f4f7e9f292add46467f8d4fe19b2514c9"/>
        <rom name="sf2_36a.bin" merge="sf2_36a.bin" size="131072" crc="c02a13eb" sha1="b807cc495bff3f95d03b061fc629c95f965cb6d8"/>
        <rom name="sf2j28.bin" size="131072" crc="d283187a" sha1="5ea83d2652e43e46b831b614d1fe06d465bac9a3"/>
        <rom name="sf2j30.bin" size="131072" crc="79022b31" sha1="b7cfe0498260cdd2779580c47829dd02435ffff4"/>
        <rom name="sf2j31.bin" size="131072" crc="fe15cb39" sha1="383478524881ea70d9e04c9b6143b8735b637eee"/>
        <rom name="sf2j35.bin" size="131072" crc="d28158e4" sha1="bf2bca6068e374011afa95e99809d262f522df18"/>
        <rom name="sf2j37.bin" size="131072" crc="516776ec" sha1="4f8b63c4d4265a105751fa72b50bd0fa538bf881"/>
        <rom name="sf2j38.bin" size="131072" crc="38614d70" sha1="39c58096f3a8e01fb439639b742b83102bbaa7f6"/>
    </game>
    <game name="sf2ja" cloneof="sf2" romof="sf2">
        <description>Street Fighter II - The World Warrior (Japan 910214)</description>
        <year>1991</year>
        <manufacturer>Capcom</manufacturer>
        <rom name="sf2_05.bin" merge="sf2_05.bin" size="524288" crc="ba529b4f" sha1="520840d727161cf09ca784919fa37bc9b54cc3ce"/>
        <rom name="sf2_06.bin" merge="sf2_06.bin" size="524288" crc="22c9cc8e" sha1="b9194fb337b30502c1c9501cd6c64ae4035544d4"/>
        <rom name="sf2_07.bin" merge="sf2_07.bin" size="524288" crc="4b1b33a8" sha1="2360cff890551f76775739e2d6563858bff80e41"/>
        <rom name="sf2_08.bin" merge="sf2_08.bin" size="524288" crc="57213be8" sha1="3759b851ac0904ec79cbb67a2264d384b6f2f9f9"/>
        <rom name="sf2_09.bin" merge="sf2_09.bin" size="65536" crc="a4823a1b" sha1="7b6bf59dfd578bfbbdb64c27988796783442d659"/>
        <rom name="sf2_14.bin" merge="sf2_14.bin" size="524288" crc="14b84312" sha1="2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e"/>
        <rom name="sf2_15.bin" merge="sf2_15.bin" size="524288" crc="2c7e2229" sha1="357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2"/>
        <rom name="sf2_16.bin" merge="sf2_16.bin" size="524288" crc="5e9cd89a" sha1="f787aab98668d4c2c54fc4ba677c0cb808e4f31e"/>
        <rom name="sf2_17.bin" merge="sf2_17.bin" size="524288" crc="b5548f17" sha1="baa92b91cf616bc9e2a8a66adc777ffbf962a51b"/>
        <rom name="sf2_18.bin" merge="sf2_18.bin" size="131072" crc="7f162009" sha1="346bf42992b4c36c593e21901e22c87ae4a7d86d"/>
        <rom name="sf2_19.bin" merge="sf2_19.bin" size="131072" crc="beade53f" sha1="277c397dc12752719ec6b47d2224750bd1c07f79"/>
        <rom name="sf2_24.bin" merge="sf2_24.bin" size="524288" crc="c1befaa8" sha1="a6a7f4725e52678cbd8d557285c01cdccb2c2602"/>
        <rom name="sf2_25.bin" merge="sf2_25.bin" size="524288" crc="994bfa58" sha1="5669b845f624b10e7be56bfc89b76592258ce48b"/>
        <rom name="sf2_26.bin" merge="sf2_26.bin" size="524288" crc="0627c831" sha1="f9a92d614e8877d648449de2612fc8b43c85e4c2"/>
        <rom name="sf2_27.bin" merge="sf2_27.bin" size="524288" crc="3e66ad9d" sha1="9af9df0826988872662753e9717c48d46f2974b0"/>
        <rom name="sf2_28a.bin" size="131072" crc="4009955e" sha1="7842dbef7650485639fbae49b9f4db7494d4f73d"/>
        <rom name="sf2_29a.bin" merge="sf2_29a.bin" size="131072" crc="bb4af315" sha1="75f0827f4f7e9f292add46467f8d4fe19b2514c9"/>
        <rom name="sf2_30a.bin" size="131072" crc="57bd7051" sha1="5e211e75b1649b07723cabc03cf15636dbbae595"/>
        <rom name="sf2_31a.bin" size="131072" crc="a673143d" sha1="e565f0ec23d6deb543c72af5a83f070c07319477"/>
        <rom name="sf2_35a.bin" size="131072" crc="8c1f3994" sha1="5e1d334399d05a837c2d80f79eada543e83afaf7"/>
        <rom name="sf2_36a.bin" merge="sf2_36a.bin" size="131072" crc="c02a13eb" sha1="b807cc495bff3f95d03b061fc629c95f965cb6d8"/>
        <rom name="sf2_38a.bin" size="131072" crc="4c2ccef7" sha1="77b119c70c255622b023de25d9af3b3aac52ea47"/>
        <rom name="sf2j_37a.bin" size="131072" crc="1e1f6844" sha1="c80e5ac6a6cea39511c38e31ea55b6cd3888024f"/>
    </game>
    <game name="sf2jc" cloneof="sf2" romof="sf2">
        <description>Street Fighter II - The World Warrior (Japan 910306)</description>
        <year>1991</year>
        <manufacturer>Capcom</manufacturer>
        <rom name="sf2_05.bin" merge="sf2_05.bin" size="524288" crc="ba529b4f" sha1="520840d727161cf09ca784919fa37bc9b54cc3ce"/>
        <rom name="sf2_06.bin" merge="sf2_06.bin" size="524288" crc="22c9cc8e" sha1="b9194fb337b30502c1c9501cd6c64ae4035544d4"/>
        <rom name="sf2_07.bin" merge="sf2_07.bin" size="524288" crc="4b1b33a8" sha1="2360cff890551f76775739e2d6563858bff80e41"/>
        <rom name="sf2_08.bin" merge="sf2_08.bin" size="524288" crc="57213be8" sha1="3759b851ac0904ec79cbb67a2264d384b6f2f9f9"/>
        <rom name="sf2_09.bin" merge="sf2_09.bin" size="65536" crc="a4823a1b" sha1="7b6bf59dfd578bfbbdb64c27988796783442d659"/>
        <rom name="sf2_14.bin" merge="sf2_14.bin" size="524288" crc="14b84312" sha1="2eea16673e60ba7a10bd4d8f6c217bb2441a5b0e"/>
        <rom name="sf2_15.bin" merge="sf2_15.bin" size="524288" crc="2c7e2229" sha1="357c2275af9133fd0bd6fbb1fa9ad5e0b490b3a2"/>
        <rom name="sf2_16.bin" merge="sf2_16.bin" size="524288" crc="5e9cd89a" sha1="f787aab98668d4c2c54fc4ba677c0cb808e4f31e"/>
        <rom name="sf2_17.bin" merge="sf2_17.bin" size="524288" crc="b5548f17" sha1="baa92b91cf616bc9e2a8a66adc777ffbf962a51b"/>
        <rom name="sf2_18.bin" merge="sf2_18.bin" size="131072" crc="7f162009" sha1="346bf42992b4c36c593e21901e22c87ae4a7d86d"/>
        <rom name="sf2_19.bin" merge="sf2_19.bin" size="131072" crc="beade53f" sha1="277c397dc12752719ec6b47d2224750bd1c07f79"/>
        <rom name="sf2_24.bin" merge="sf2_24.bin" size="524288" crc="c1befaa8" sha1="a6a7f4725e52678cbd8d557285c01cdccb2c2602"/>
        <rom name="sf2_25.bin" merge="sf2_25.bin" size="524288" crc="994bfa58" sha1="5669b845f624b10e7be56bfc89b76592258ce48b"/>
        <rom name="sf2_26.bin" merge="sf2_26.bin" size="524288" crc="0627c831" sha1="f9a92d614e8877d648449de2612fc8b43c85e4c2"/>
        <rom name="sf2_27.bin" merge="sf2_27.bin" size="524288" crc="3e66ad9d" sha1="9af9df0826988872662753e9717c48d46f2974b0"/>
        <rom name="sf2_28c.bin" size="131072" crc="6eddd5e8" sha1="62bd1c2fc0321809421c9a592f691b5b1a1d8807"/>
        <rom name="sf2_29a.bin" merge="sf2_29a.bin" size="131072" crc="bb4af315" sha1="75f0827f4f7e9f292add46467f8d4fe19b2514c9"/>
        <rom name="sf2_30c.bin" size="131072" crc="8add35ec" sha1="b08428ff262ca4feddd3c72058b4b674a5401aba"/>
        <rom name="sf2_31c.bin" size="131072" crc="c4fff4a9" sha1="4b593ace201fe7f5a00b5cd7f4e8fc3f8dd4ceed"/>
        <rom name="sf2_35c.bin" size="131072" crc="6bcb404c" sha1="b5f24556c633c521aadd94e016d78db6922e3dfa"/>
        <rom name="sf2_36a.bin" merge="sf2_36a.bin" size="131072" crc="c02a13eb" sha1="b807cc495bff3f95d03b061fc629c95f965cb6d8"/>
        <rom name="sf2_38c.bin" size="131072" crc="8210fc0e" sha1="7d6cfb99afa89d0e6e991d9f7c1808b740def125"/>
        <rom name="sf2j_37c.bin" size="131072" crc="0d74a256" sha1="587fd0ee1c2ef54554237486eb5b0d1ec30c2868"/>
    </game>
    <game name="sf2koryu" cloneof="sf2ce" romof="sf2ce">
        <description>Street Fighter II&apos; - Champion Edition (Kouryu)</description>
        <year>1992</year>
        <manufacturer>bootleg</manufacturer>
        <rom name="s92_01.bin" merge="s92_01.bin" size="524288" crc="03b0d852" sha1="f370f25c96ad2b94f8c53d6b7139100285a25bef"/>
        <rom name="s92_02.bin" merge="s92_02.bin" size="524288" crc="840289ec" sha1="2fb42a242f60ba7e74009b5a90eb26e035ba1e82"/>
        <rom name="s92_03.bin" merge="s92_03.bin" size="524288" crc="cdb5f027" sha1="4c7d944fef200fdfcaf57758b901b5511188ed2e"/>
        <rom name="s92_04.bin" merge="s92_04.bin" size="524288" crc="e2799472" sha1="27d3796429338d82a8de246a0ea06dd487a87768"/>
        <rom name="s92_05.bin" merge="s92_05.bin" size="524288" crc="ba8a2761" sha1="4b696d66c51611e43522bed752654314e76d33b6"/>
        <rom name="s92_06.bin" merge="s92_06.bin" size="524288" crc="e584bfb5" sha1="ebdf1f5e2638eed3a65dda82b1ed9151a355f4c9"/>
        <rom name="s92_07.bin" merge="s92_07.bin" size="524288" crc="21e3f87d" sha1="4a4961bb68c3a1ce15f9d393d9c03ecb2466cc29"/>
        <rom name="s92_08.bin" merge="s92_08.bin" size="524288" crc="befc47df" sha1="520390420da3a0271ba90b0a933e65143265e5cf"/>
        <rom name="s92_09.bin" merge="s92_09.bin" size="65536" crc="08f6b60e" sha1="8258fcaca4ac419312531eec67079b97f471179c"/>
        <rom name="s92_10.bin" merge="s92_10.bin" size="524288" crc="960687d5" sha1="2868c31121b1c7564e9767b9a19cdbf655c7ed1d"/>
        <rom name="s92_11.bin" merge="s92_11.bin" size="524288" crc="978ecd18" sha1="648a59706b93c84b4206a968ecbdc3e834c476f6"/>
        <rom name="s92_12.bin" merge="s92_12.bin" size="524288" crc="d6ec9a0a" sha1="ed6143f8737013b6ef1684e37c05e037e7a80dae"/>
        <rom name="s92_13.bin" merge="s92_13.bin" size="524288" crc="ed2c67f6" sha1="0083c0ffaf6fe7659ff0cf822be4346cd6e61329"/>
        <rom name="s92_18.bin" merge="s92_18.bin" size="131072" crc="7f162009" sha1="346bf42992b4c36c593e21901e22c87ae4a7d86d"/>
        <rom name="s92_19.bin" merge="s92_19.bin" size="131072" crc="beade53f" sha1="277c397dc12752719ec6b47d2224750bd1c07f79"/>
        <rom name="u195.rom" size="131072" crc="c95e4443" sha1="28417dee9ccdfa65b0f4a92aa29b90279fe8cd85"/>
        <rom name="u196.rom" size="524288" crc="b23a869d" sha1="24247d412f20d069919cc8a7fff208af3f7aa1d2"/>
        <rom name="u221.rom" size="131072" crc="64e6e091" sha1="32ec05db955e538d4ada26d19ee50926f74b684f"/>
        <rom name="u222.rom" size="524288" crc="9236a79a" sha1="39c47b0b0ca2f5f569ff07ebb91040b95d0cb43b"/>
    </game>

2 个答案:

答案 0 :(得分:3)

尝试这样的事情

Option Explicit

Private Sub Form_Load()
    Dim oRoot As Object
    Dim oNode As Object

    With CreateObject("MSXML2.DOMDocument")
        .Load "d:\temp\aaa.xml"
        Set oRoot = .DocumentElement
    End With
    For Each oNode In oRoot.SelectNodes("//rom[@name='sf2_06.bin']")
        Debug.Print oNode.ParentNode.Attributes.GetNamedItem("name").Text
    Next
End Sub

答案 1 :(得分:2)

@wqw提供了一个完美的简洁答案,但是如果您不熟悉XPath,则可以通过遍历df <- structure(list(Time = structure(1:9, .Label = c("2014/10/11", "2014/10/12", "2014/10/13", "2014/10/14", "2014/10/15", "2014/10/16", "2014/10/17", "2014/10/18", "2014/10/19"), class = "factor"), a = structure(c(1L, 1L, 2L, 4L, 4L, 2L, 2L, 1L, 3L), .Label = c("A", "B", "C", "D"), class = "factor"), b = c(40L, 40L, 9L, 16L, 1L, 20L, 20L, 11L, 31L), c = c(20L, 20L, 10L, 5L, 6L, 7L, 7L, 9L, 20L), d = c(10L, 10L, 9L, 12L, 5L, 8L, 8L, 5L, 23L ), id = 1:9), class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9")) game节点来手动查找数据:

rom

这基本上与@wqw的XPath语句相同,但是也许更容易实现。

确保您具有一个最顶部的element元素。您提供的XML不会被XML解析器接受。总体结构应如下所示:

Option Explicit

Private Function Search(ByVal xml As String, ByVal romName As String) As String
    Dim objDocument As New MSXML2.DOMDocument
    Dim objRoot As MSXML2.IXMLDOMNode
    Dim objGameNode As MSXML2.IXMLDOMNode
    Dim objRomNode As MSXML2.IXMLDOMNode
    Dim sResults As String

    ' Load XML into DOM Document
    objDocument.loadXML xml

    ' Get Root (top-most) element
    Set objRoot = objDocument.DocumentElement

    ' Initalize return value
    sResults = ""

    ' Loop through all Games and Roms
    For Each objGameNode In objRoot.childNodes

        For Each objRomNode In objGameNode.childNodes

            If objRomNode.nodeName = "rom" Then

                ' Check ROM name
                If objRomNode.Attributes.getNamedItem("name").nodeValue = romName Then
                    ' Add game to return list
                    sResults = sResults & objGameNode.Attributes.getNamedItem("name").nodeValue & vbCrLf
                End If

            End If

        Next

    Next

    Search = sResults

End Function

Private Sub cmdSearch_Click()

    ' I added your XML in a txtGames textbox and added a txtSearch textbox
    txtResults.Text = Search(txtGames.Text, txtSearch.Text)

End Sub