Nalezení slova v závorkách – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nalezení slova v závorkách – Visual Basic – Fórum – Programujte.comNalezení slova v závorkách – Visual Basic – Fórum – Programujte.com

 

Marek Sz
~ Anonymní uživatel
13 příspěvků
24. 3. 2015   #1
-
0
-

Může mi někdo poradit jak zadat do počítače abych vyhledal text v závorkách příklad [Určitě to pomůže] potřeboval bych najít "to" děkuji za radu  [[](*)[]] takto najdu celé závorky s textem ale jen konkrétní text je problém. 

Nahlásit jako SPAM
IP: 62.77.94.–
pee-jay_cz0
Návštěvník
24. 3. 2015   #2
-
0
-

Já bych si oindexoval páry závorek, otevírací/zavírací, a pak hledal slova.

Ty nalezená bych testoval, jestli nejsou uvnitř závorek.

FOR i = 1 to PocetZavorek

    IF ZacatekSlova > Index(i, 1) AND KonecSlova < Index(i, 2) THEN

        ZAVORKY = TRUE

        EXIT FOR

NEXT i

Nahlásit jako SPAM
IP: 213.129.141.–
pee-jay_cz0
Návštěvník
24. 3. 2015   #3
-
0
-

#2 pee-jay_cz

Před NEXT i patří ještě END IF, sorry.

Nahlásit jako SPAM
IP: 213.129.141.–
Marek Sz
~ Anonymní uživatel
13 příspěvků
26. 3. 2015   #4
-
0
-

#3 pee-jay_cz
děkuji za odpověď ale asi jsem to nepochopil jak to mám doplnit když chci v  závorkách třeba najít [ Pavle je borec.] chci najít jen borec.

FOR i = 1 to PocetZavorek

    IF ZacatekSlova > Index(i, 1) AND KonecSlova < Index(i, 2) THEN

        ZAVORKY = TRUE

        EXIT FOR

NEXT i

Nahlásit jako SPAM
IP: 213.29.16.–
Marek Sz
~ Anonymní uživatel
13 příspěvků
26. 3. 2015   #5
-
0
-

#4 Marek Sz

Nahlásit jako SPAM
IP: 213.29.16.–
pee-jay_cz0
Návštěvník
26. 3. 2015   #6
-
0
-

Nejdriv hledam slovo - vsechny jeho vyskyty - a pak overuji, zda lezi uvnitr nejakeho druhu zavorek, i kdyz naprogramoval jsem jen jedny [], prozatim.

' VB6

Option Explicit

Private Type ZavorkyType    'Pozice paru zavorek v hledanem textu
    Oteviraci As Long
    Zaviraci As Long
End Type

Private Zavorky() As ZavorkyType  '[]
Private PocetZavorek As Long

' Muze byt: Zavorky1 (), Zavorky2 [], Zaovorky3 {}, Zavorky4 <>…

Private Sub Form_Load()

    Dim FindWhere As String
    Dim FindWhat As String
    Dim Pos As Long

    FindWhere = "[Pavel je borec.] Pavel je borec. [Pavel je borec.]"
    IndexujZavorky FindWhere

    '----------------------------------------------------------------------------

    FindWhat = "borec"
    Pos = 1

Repeat:

    Pos = InStr(Pos, FindWhere, FindWhat)
    If Pos > 0 Then
        Debug.Print "Slovo je na pozici: " & Pos;
        If UvnitrZavorek(Pos, Len(FindWhat)) Then
            Debug.Print ", je v zavorkach."
        Else
            Debug.Print ", neni v zavorkach."
        End If
        Pos = Pos + 1
        GoTo Repeat
    End If

End Sub

Private Sub IndexujZavorky(ByRef txt As String)

    Dim Pos1 As Long
    Dim Pos2 As Long
    Pos1 = 1
    PocetZavorek = 0

Repeat:

    Pos1 = InStr(Pos1, txt, "[")
    If Pos1 > 0 Then
        Pos2 = InStr(Pos1 + 1, txt, "]")
        If Pos2 > 0 Then
            PocetZavorek = PocetZavorek + 1
            ReDim Preserve Zavorky(1 To PocetZavorek)
            Zavorky(PocetZavorek).Oteviraci = Pos1
            Zavorky(PocetZavorek).Zaviraci = Pos2
            Pos1 = Pos2 + 1
            GoTo Repeat
        End If
    End If

End Sub

Private Function UvnitrZavorek(ByVal ZacatekSlova As Long, ByVal DelkaSlova As Long) As Boolean

    Dim i As Long
    Dim KonecSlova As Long
    KonecSlova = ZacatekSlova + DelkaSlova - 1
    For i = 1 To PocetZavorek
        If ZacatekSlova > Zavorky(i).Oteviraci _
           And KonecSlova < Zavorky(i).Zaviraci Then
            UvnitrZavorek = True
            Exit Function
        End If
    Next i

End Function
Nahlásit jako SPAM
IP: 213.129.138.–
pee-jay_cz0
Návštěvník
26. 3. 2015   #7
-
0
-

Jeste se vratim k puvodnimu zneni otazky. 

Pokud se podarilo hledane slovo najit a jde jen o to zbavit se zavorek, staci to procistit:

Private Function CleanString(ByVal txt As String) As String

    ' ZAVORKY
    txt = Replace(txt, "(", vbNullString)
    txt = Replace(txt, ")", vbNullString)
    txt = Replace(txt, "[", vbNullString)
    txt = Replace(txt, "]", vbNullString)
    txt = Replace(txt, "{", vbNullString)
    txt = Replace(txt, "}", vbNullString)
    
    CleanString = Trim$(txt)

End Function
Nahlásit jako SPAM
IP: 213.129.139.–
Marek Sz
~ Anonymní uživatel
13 příspěvků
1. 4. 2015   #8
-
0
-

Děkuji za odpověď právě to zkouším ale nemůžu to rozchodit možná že jsem to nenapsal do úvodu jedná se mě o word 2013 tam je taky VB ale teď vlastně přemýšlím jestli to bude chodit i ve wordu? protože jste psal VB6. Nebo to je přímo jen pro Visual Basic 6 děkuji za odpověď.

Nahlásit jako SPAM
IP: 62.77.94.–
pee-jay_cz0
Návštěvník
1. 4. 2015   #9
-
0
-

Tak to, Marku, opravdu nevim. VB6 a VBA jsou temer identicke a rozdily se tykaji - z  toho, co jsem zjistil - jen pouziti common controls. Jako třeba instancovani optionboxu atd. I kdyz na druhou stranu jsem programoval jenom v excelu, a to ve starsich verzich, takze kdovi. Musite to zkouset :)

Nahlásit jako SPAM
IP: 213.129.139.–
Marek Sz
~ Anonymní uživatel
13 příspěvků
2. 4. 2015   #10
-
0
-

děkuji za odpověď budu to zkoušet musím si to celé podrobně rozebrat co na co je 

jen jsem se chtěl zeptat 

Option Explicit - na co to je, děkuji

pak dám vědět jak jsem dopadl

Nahlásit jako SPAM
IP: 62.77.94.–
pee-jay_cz0
Návštěvník
4. 4. 2015   #12
-
0
-

Ja ale vubec nepremejslim...
Private Sub Form_Load() se nemuze ve Wordu automaticky spustit po nacteni a zobrazeni formulare, protoze tam zadny formular (Userform) neni, dokud neni vytvoren uzivatelem.
Varianta A: vytvorit Userform pojmenovany Form.
Varianta B: vytvorit aspon tlacitko pojmenovane treba cmdSearch a pak uz staci prejmenovat proceduru z Form_Load na cmdSearch_Click.
A kod by mel byt spustitelny.

Nahlásit jako SPAM
IP: 213.129.141.–
Marek Sz
~ Anonymní uživatel
13 příspěvků
20. 8. 2015   #13
-
0
-

#12 pee-jay_cz
#12 pee-jay_cz

Děkuji opravdu za návod tak jsem se tehdy snažil to rozchodit ale vzdal jsem to neměl jsem čas na to si to rozebrat až teď jsem to rozchodil ale jen jedna věc mě teď trápí je to možná primitivní věc ale nemohu nasměřovat to do souboru kde to chci projít

zkoušel jsem toto

 ChDrive "F"
adresar = "F:\Marek aktualizace\"
ChDir adresar
SouboryKtere = Dir("*.docx")

 FindWhere = Documents.Open FileName:=adresar & "\" & SouboryKtere 
 IndexujZavorky FindWhere

Bude to fungovat? 

děkuji za odpověď ale nějak mi to nejde nahradit

Nahlásit jako SPAM
IP: 89.248.244.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 12 hostů

Podobná vlákna

Nalezení rekurze — založil sh00ter

Automatické nalezení adresy — založil Michal Ř.

Nalezeni kombinace odporu — založil Matej Rychtarik

Nalezení souborů na disku — založil savek

[C#] Nalezení znaku ve stringu — založil MartiniBaby

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý