Erste Schritte Frage zu indexOf und startsWith

xxtompsonxx

Mitglied
Hallo Leute.

Folgendes Programm, bewirkt dass der erste Buchstabe eines Strings entfernt wird, falls dieser ein Großbuchstabe ist.

Meine Frage lautet, ob man das irgendwie einfacher hätte schreiben können (z.b. mit startsWith())?

Java:
public void testFirstLetter(String text){
		String ausgabe =text;
		String großbuchstaben = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		for(int i = 0; i < text.length();i++){
			if(großbuchstaben.indexOf(text.charAt(i)) > -1 && i == 0){
				ausgabe = ausgabe.substring(1);
			}
		}
		System.out.println(ausgabe);
	}

EDIT: Habe noch eine zweite Frage, die nichts mit diesem Beispiel zu tun hat:
irgendeinstring.charAt(0).toLowerCase(); funktioniert nicht.
Wie kann ich das beheben?

mfG
Thomas
 
Zuletzt bearbeitet:
Ich würde beim ersten Vergleich, den ersten Character einfach testen, ob es ein Grossbuchstabe ist und..

dein zweiter Versuch geht nicht weil tolowerCase eine statische Method von Character ist.

Ich hab mal für beide kleine jUnit-Tests geschrieben.

Java:
	@Test
	public void startUpper() {
		String irgendeinstring = "A turtle is a small animal";
		Character firstChar = irgendeinstring.charAt(0);
		if (Character.isUpperCase(firstChar)) {
			irgendeinstring = irgendeinstring.substring(1);
		}
		assertEquals(" turtle is a small animal", irgendeinstring);
	}

	@Test
	public void testLower() {
		String irgendeinstring = "A turtle";
		Character lowerA = Character.toLowerCase(irgendeinstring.charAt(0));
		assertTrue("Sollte 'a' sein", lowerA.equals('a'));
	}
 
Hi,
es gibt noch die Möglichkeit mit Regular expressions:
Java:
	public void testFirstLetter2(String text){
        String ausgabe = text;
        if(text.matches("[A-Z]+.*")){
        	ausgabe = text.substring(1, text.length());
        }
        System.out.println(ausgabe);
    }
dein zweiter Versuch geht nicht weil tolowerCase eine statische Method von Character ist.
sollte das nicht heissen: dein zweiter Versuch geht nicht weil tolowerCase keine statische Method von Character ist?

Gruss knilch
 
Zuletzt bearbeitet:
Vielen Dank!

Das mit einer Reg-Ex ist eine sehr gute Idee, ist einfacher als meine Methode. Danke dafür 🙂

Zu den Testklassen:

Verstehe die TestLower irgendwie nicht so ganz.
Könntest du mir die bitte noch zeilenweise erklären 🙂 ?

mfG
Thomas
 
das mit regex hatte ich auch kurz überlegt und in der Tat würde das funktionieren...

Habe ich dann aber nicht genommen, weil ich das doch für over-kill (und langsam) halte, wenn "nur" für den ersten Buchstabe ein ganzer String gescannt wird. Daher habe ich nur den ersten Buchstabe getestet.

Bei mir steht in der javadoc zu Character
HTML:
static char	toLowerCase(char ch)
Converts the character argument to lowercase using case mapping information from the UnicodeData file.
Der Code vom TO ruft des aber mit dem primitiven Typ char auf und folglich gibt es da kein tolowerCase. Somit Compile-Fehler.
 
Das folgende ist ein jUnit Test

public void testLower() {
Die Methode heisst testLower und prüft, ob wandelte den ersten Buchstabe in einen Kleinbuchstaben.
String irgendeinstring = "A turtle";
Der Test-String
Character lowerA = Character.toLowerCase(irgendeinstring.charAt(0));
Vom String nehmen wir den ersten Buchstaben (charAt(0)='A') und den wandeln wir in einen Kleinbuchstaben (Character.toLowerCase('A')-->'a').
assertTrue("Sollte 'a' sein", lowerA.equals('a'));
Prüfe, das alles so stimmt.
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben