Diskuze: Nahrazení "zástupných znaků" v řetězci načítaném z *.txt
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
google = csharp text replace
https://www.geeksforgeeks.org/…lace-method/
string original = "Hello, World!";
string modified = original.Replace("World", "Geeks");
Console.WriteLine("" + modified);
Ja bych to resil mozna tak, ze mam v textu znacku s predvyplnenym textem. A hledal reg. vyrazem znacky a obsah mezi nimi
str = "Právě jsem se pokusil/pokusila o něco a jsem z toho zmateny/zmatena a nevím co s tím"
str = "Právě jsem se {pokusil/pokusila} o něco a jsem z toho {zmateny/zmatena} a nevím co s tím"
pak... google = csharp preg replace -> csharp preg replace pattern tag
https://stackoverflow.com/…s-in-c-sharp
Pozor, ted to plodim z hlavy, CSHARP vubec nepouzivam, takze si presnejsi zapis
paternu dohledej v dokumentaci
if (muz)
Regex rgx = new Regex("{.*?/(.*)?}");
else
Regex rgx = new Regex("{(.*)?)/.*?}");
message = Regex.Replace(message, rgx, "$1");
cely ten text v regexp se jmenuje patern, vzor (struktura textu, kterou chces najit)
{}/ jsou znaky z textu {pokusil/pokusila} je mozne, ze bude nutne pred ne pridat zpetne lomitko \, "\{(.*)?)\/.*?\}"
.* jakykoliv znak (.) opakuj 0 az nekonecno
() oznacuji vybranou cast pro subpatern (vysvetlim pozdeji)
.*?znak_nebo_pattern - opakuj jakykoliv znak dokud nenarazis na znak nebo patern
Melo by to fungovat tak, ze
Bohuzel nevim, zda se to takto v C# da zapsat. A jestli tam funguje zapis
"$1" jako v jinych jazycich A
zda to bude probihat do konce radku nebo ne.
message = Regex.Replace(message, "{(pokusil)/pokusila}", "$1"); // cili, kdybys to napsal takto,
// tak to bude jenom muzsky rod pro konkretni zavorku se slovem. to moje by melo braz cokoliv, {slovoA/slovoB}
Ahoj, moc Ti děkuji Peter. To cos mi napsal určitě vyzkouším.
Prozatím jsem to vyřešil možná trochu zvláštně, ale je to zatím 100%
funkční:
Sub Vypis(Text As String)
Dim Text_1 As String = Text.Replace("@", Kp) ' @ nahradí za koncovku přídavného jména
Dim Text_2 As String = Text_1.Replace("#", Ks) ' % nahradí za koncovku slovesa
Dim Text_3 As String = Text_2.Replace("%", Jmeno) ' # nahradí za jméno
Dim Pocet As Integer = Len(Text_3)
For i = 0 To Pocet - 1
Call Pauza(t)
Console.Write(Text_3(i))
Next
End Sub
Navíc jsem chtěl, aby se text vypisoval "zpomaleně"
Ještě jednou moc díky za ochotu a za dobrý námět ke studiu. Rosťa
https://learn.microsoft.com/…ring.replace?…
s = s.Replace('a', 'b').Replace('b', 'c').Replace('c', 'd');
Zobrazeno 4 zpráv z 4.