Szarp napisał(a)
Chyba chodzi Ci o coś takiego:
Kopiuj
private bool isWord(char firstChar)
{
// Jeśli pierwszy znak w łańcuchu należy do zbioru liter a..z lub A..Z
// wtedy można uznać, że dany łańcuch jest słowem.
return (firstChar >= 65 && firstChar <= 90) || (firstChar >= 97 && firstChar <= 122);
// Ten kod nie daje 100% gwarancji, ale zawsze coś ;)
}
Ten kod jest tak c****, że aż się smutno robi. Co to za magiczne cyferki? Nie można użyć char.IsLetter jak cywilizowani ludzie?
jakistampan napisał(a)
Kopiuj
int a = richTextBox1.Lines.Length;
string[] slowa = new string[a];
string linijki;
int licznik = 0;
for (int i = 0; i < richTextBox1.Lines.Length; i++)
{
linijki = richTextBox1.Lines[i];
slowa = linijki.Split(new Char[] { ' ', ',', '.', '!', '?', '\t' });
if (slowa.Length > 0) licznik++; else break;
}
label1.Text = richTextBox1.Text.Length.ToString() + " znaków";
label3.Text = licznik.ToString() + " linii"; // wypisuje ilość linii tekstu
Znowu jest jakiś konkurs na najbardziej nieczytelny kod i ja nic nie wiem? :( Ten else break; to z jakiej choinki i po co? :|
Jeśli chodzi o policzenie linijek zawierających choćby jedno słowo, to sugeruję tak:
Kopiuj
char[] separatory = " .,;:!?\t".ToCharArray();
int linijkiZTekstem = 0;
foreach (string linia in this.richTextBox1.Lines)
{
if (linia.Split(separatory, StringSplitOptions.RemoveEmptyEntries).Length > 0)
{
linijkiZTekstem++;
}
}
this.label1.Text = linijkiZTekstem.ToString();