Vyhledání znaků a změna "velikosti" písma   zodpovězená otázka

VB.NET

Zdravím,

Chci se zeptat, jak udělat, aby se vždy automaticky opravila velikost prvního písmena na začátku věty v TextBoxu? Například místo:

visual Basic je snažší, než C#! vědí to všichni. říkejte si ale, co chcete.

Aby to vypsalo toto:

Visual Basic je snažší, než C#! Vědí to všichni. Říkejte si ale, co chcete.

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

Tohle by ti mohlo pomoci:

Public Function Prvni_pismeno_velke(ByVal vstupni_text As TextBox) As String

Dim prvni_pismeno_velke_text As String = vstupni_text.Text
Dim prvni_pismeno As String = Microsoft.VisualBasic.UCase(Microsoft.VisualBasic.Left(vstupni_text.Text, 1))

prvni_pismeno_velke_text = prvni_pismeno & Microsoft.VisualBasic.Mid(prvni_pismeno_velke_text, 2, Microsoft.VisualBasic.Len(prvni_pismeno_velke_text) - 1)

Return prvni_pismeno_velke_text

End Function

Omlouvám se za rozházený text, ale nejde mi to srovnat a natož udělat jako VBcode, fakt nevim

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

Bohužel - Po vyvolání funkce v TextChange události se nic neděje.

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

A používáš tu funkci dobře?

V TextChange události bys měl mít :

TextBox1.Text = Prvni_pismeno_velke(TextBox1)

A třeba v modulu tu funkci

P.S. Převádí celý string , tzn, že pokud budeš psát do textboxu jednotlivé znaky, tak budou všechny písmena velká, ale vložíš-li tam celou větu bude první písmeno velké. Úprava je na snadě a doufám že jí zvládneš :), pokud ne ozvi se

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

Aha, já vyvolával jen kódem Prvni_pismeno_velke(TextBox1)

Zkusím, jsem totiž zvyklý na Suby :D. Díky.

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

Pomohl bys mi ještě změnit každý znak po tečce, vykřičníku a otazníku? Toto mění jen úplně první písmenko v TextBoxu, ne ve větách :-(.

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

Co třeba projít text cyklem a u každého znaku se podmínkou dotázat jestli je to tečka otazník atd. a pokud ano tak další zank změnit na velký.

Zde metoda kterou jsem sám napsal na váš text mi funguje, do paramatru se předá text který chcete upravit a vrátí upravený :)

private string OpravVelkaPismena(string text)
        {
            //na začátek nastavíme true aby první písmeno bylo velké
            bool isNextChange = true;

            string novyText = "";

            for (int i = 0; i < text.Length; i++)
            {
                //aktuánlí znak dáme do mezi proměné
                string p = text[i].ToString();

                //pokud se ná změnit na velké tak se změní
                if (isNextChange)
                {
                    //změní se pouze pokud není za . ! nebo  ? mezera
                    if (p != " ")
                    {
                        p = p.ToUpper();
                        isNextChange = false;
                    }
                }

                //přidáme nove upravené nebo i neupravené pismeno
                novyText = novyText + p;

                //pokdu je tento znak ! . nebo ? tak se příští smyčku změní
                if (text[i] == '.' || text[i] == '!' || text[i] == '?')
                {
                    isNextChange = true;
                }
            }

            //vrátí hotoví text :)
            return novyText;
        }

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

Tohle je zatim jen od boku, ještě večer to zkoriguju ale:

Public Function Korekce_textu(ByVal vstupni_text As TextBox) As String

        Dim zaloha_textu As String = vstupni_text.Text
        Dim zaloha_oddelovacu As String = ""

        For znak As Integer = 0 To zaloha_textu.Length - 1
            If zaloha_textu.Substring(znak, 1) = "." Then
                zaloha_oddelovacu = zaloha_oddelovacu + "."
            ElseIf zaloha_textu.Substring(znak, 1) = "!" Then
                zaloha_oddelovacu = zaloha_oddelovacu + "!"
            ElseIf zaloha_textu.Substring(znak, 1) = "?" Then
                zaloha_oddelovacu = zaloha_oddelovacu + "?"
            End If
        Next znak

        Dim pole_vet() As String = Nothing
        Dim kompletni_text As String = ""
        Dim oddelovac_vet(3) As Char

        oddelovac_vet(0) = "."
        oddelovac_vet(1) = "?"
        oddelovac_vet(2) = "!"

        pole_vet = vstupni_text.Text.Split(oddelovac_vet)

        For i As Integer = 0 To pole_vet.Length - 1

            Dim prvni_pismeno As String = Left(pole_vet(i), 1)
            Dim prvni_pismeno_velke_text As String = pole_vet(i)
            Dim j As Integer = 0

            If i = 0 Then
                If prvni_pismeno = " " Then
                    Dim delka_vety As Integer = Len(pole_vet(i))
                    Dim upravena_veta As String = pole_vet(i).ToString.Remove(0, 1)
                    prvni_pismeno = UCase(Left(upravena_veta, 1))
                    prvni_pismeno_velke_text = prvni_pismeno & Mid(upravena_veta, 2, Len(upravena_veta) - 1)
                    kompletni_text = prvni_pismeno_velke_text
                    j = j + 1
                Else
                    prvni_pismeno = UCase(Left(pole_vet(i), 1))
                    prvni_pismeno_velke_text = prvni_pismeno & Mid(prvni_pismeno_velke_text, 2, Len(prvni_pismeno_velke_text) - 1)
                    kompletni_text = prvni_pismeno_velke_text
                    j = j + 1
                End If
            Else
                If prvni_pismeno = " " Then
                    Dim delka_vety As Integer = Len(pole_vet(i))
                    Dim upravena_veta As String = pole_vet(i).ToString.Remove(0, 1)
                    prvni_pismeno = UCase(Left(upravena_veta, 1))
                    prvni_pismeno_velke_text = prvni_pismeno & Mid(upravena_veta, 2, Len(upravena_veta) - 1)
                    kompletni_text = kompletni_text + zaloha_oddelovacu.Substring(j, 1).ToString + " " + prvni_pismeno_velke_text
                    j = j + 1
                Else
                    prvni_pismeno = UCase(Left(pole_vet(i), 1))
                    prvni_pismeno_velke_text = prvni_pismeno & Mid(prvni_pismeno_velke_text, 2, Len(prvni_pismeno_velke_text) - 1)
                    kompletni_text = kompletni_text + zaloha_oddelovacu.Substring(j, 1).ToString + " " + prvni_pismeno_velke_text
                    j = j + 1
                End If
            End If


        Next i

        Return kompletni_text

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

Děkuji oboum :)

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