Práce s textem   otázka

VB.NET, Algoritmy

Dobrý den,

Chtěl bych se zeptat na téma, které se týká práce s textem. Jsem začátečník, a zajímalo by mě jak mám postupovat při práci s polem do kterého jsem si vložil text. A také mě zajímá jak měnit hromadně(náhodně) např. index pole.

Dim slovo As String = ""

Dim poleslovo(100) As String

poleslovo(0) = "AFLA"

slovo = poleslovo(x)

Dim x As Integer = Rnd() * 10

Asi něco určitě dělám špatně ... zatím jsem nepřišel na to co ..

Je to snad datovým typem ? Prosím o radu :)

Děkuji za každou odpověď :)

PS: Visual Basic 2010

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na tohle se mnohem lépe než pole hodí System.Collections.Generic.List(Of String). List je přímo určený k tomu, aby se do něj snadněji přidávaly, z něj mazaly a v něm měnily položky. Sám v sobě také obsahuje pole, které ale zvětšuje podle potřeby, takže Vy nemusíte kolem toho pole nic řešit.

Dim slova = New List(Of String)
slova.Add("slovo 1 - index 0")
slova.Add("slovo 2 - index 1")
slova.Add("slovo 3 - index 2")

slova.RemoveAt(0) ' Smaže "slovo 1 - index 0", List se "posune"
' 0: slovo 2 - index 1
' 1: slovo 3 - index 2
slova(0) = "slovo" ' Změní "slovo 2 - index 1" na "slovo"
' 0: slovo
' 1: slovo 3 - index 2
slova.Remove("slovo 3 - index 2") ' Smaže "slovo 3 - index 2" (index 1)
' 0: slovo
slova.Insert(0, "slovo 0") ' Vloží "slovo", ale ne na konec (Add), ale na začátek - na index 0
' 0: slovo 0
' 1: slovo 

Pokud jde o náhodný přístup k poli, nepoužívejte Rnd(), to je pozůstatek z VB 6. Místo toho použijte pseudonáhodný generátor z .NET frameworku:

Dim náhoda As New Random()
Dim náhodnýIndex = náhoda.Next(0, slova.Count)
' ^ Vrátí nějaký index z Listu slov
slova(náhodnýIndex) = "Změněno pseudonáhodou"

Deklaraci náhoda As New Random() dejte na úroveň třídy, ne do metody, protože kdybyste vytvářel stále nové generátory, budete dostávat stejná čísla, musíte mít jeden a na něm volat Next()

Public Class Form1

  Dim slova As New List(Of STring)
  Dim náhoda As New Random()

  Public Sub ZměňNáhodně()
    slova(náhoda.Next(0, slova.Count)) = "Změněno pseudonáhodou"
  End Sub

End Class
nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pozor, do slova.Next nedávejte jako drhý parametr slova.Count - 1, ale jen slova.Count.

Random.Next(0, 5) vrací vždy čísla od 0 do 4 včetně - 5 už nevrátí nikdy.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky za upřesnění, opravil jsem to v původním příspěvku.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jen upozorňuji že minimálně jedna z původních bych je, že máte nadeklarováno X až to jeho použití !!!!

slovo = poleslovo(x)
Dim x As Integer = Rnd() * 10

pro správné použití by to muselo být opačně

Dim slovo As String = ""
Dim poleslovo(100) As String
poleslovo(0) = "AFLA"

Dim x As Integer = Rnd() * 10
slovo = poleslovo(x)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback