Autokorrektur Stringline

H

HalloanAlle

Gast
Hallo Leute,

ich habe die Aufgabe eine eingelesene Zeile auf folgendes zu überprüfen:

1.) alle leerzeichen und tabs die zu mehr als einmal vorkommen sollen gelöscht werden. auch am anfang
2.) Der erste Buchstabe am anfang und nach den zeichen '.' ; '?' ; '!' groß sein

bsp.:

ich gehe spazieren. im wald.

-->

Ich gehe spazieren. Im wald.

habe jetzt einen stringbuilder gemacht und prüfe nun jedes einzelne zeichen auf inhalt und fürge es an den stringbuilder an, nur leider funkt das ganze nicht.
bitte um hilfe
 

eRaaaa

Top Contributor
nur leider funkt das ganze nicht.
bitte um hilfe

Ähm ja, und bei der knappen Fehlerbeschreibung ohne deinen Code zu zeigen sollen wir dir jetzt sagen können wo das Problem besteht?
Oder erhoffst du dir hier eine Fertiglösung von jmd? :)
Dein Grundgedanke könnte klappen, ansonsten könnte man da evtl. auch mit Regex etwas zaubern
 
H

HalloanALLE

Gast
Java:
static void control(int length, String text)
	{
	int counter=0;
	int countertab=0;
	int counterspace=0;
	int firstUpper=0;
	StringBuilder newtext = new StringBuilder(); 
	
	
	
		for (int search=0; search<length; search++)
		{
			
			char b=text.charAt(search);
			
			if (Character.isLetter(b)&& firstUpper==0)
			{
				if (!Character.isUpperCase(b))
				{
					b=( Character.toUpperCase(b) );
					firstUpper = 1;
				}
			}
			if(b=='.' || b=='?' || b== '!')
			{
				
			}
			if (b==' ')
			{
				if(text.charAt(search+1)==' ')
				{
				//da hats noch was, weil wenn 2 leerzeichen sind schreibt er in einer wurscht
				Out.println(search+1);
				
				search++;
				}
				else
				{
				newtext.append(' ');
				counterspace=1;
				}
			}
			else if (b=='	')
			{
				if(text.charAt(search+1)==' ')
				{
				search++;
				}
				else
				{
				newtext.append(' ');
				countertab=1;
				}
			}
			
			else
			{
			newtext.append(b);			
			}
		
		}
		Out.println(newtext);

was ist den Regex??? noch nie gehört!
Eine ganze Lösung wäre natürlich am einfachsten, aber mir würde es schon reichen wenn mir wer die Fehler sagt.
 

eRaaaa

Top Contributor
Uha....

1.)
Code:
else if (b=='   ')
- ein char ist nur ein Unicode-Zeichen
2.)
Java:
           if(b=='.' || b=='?' || b== '!')
            {
                
            }
willst du da nicht etwas tun?

3.) Regex - reguläre Ausdrücke : Galileo Computing :: Java ist auch eine Insel – 4.7 Reguläre Ausdrücke

Vllt. konzentrierst du dich erstmal nur auf eine der Aufgaben, z.B. fängst mit 2.) an. Da musst du ja einfach nur gucken ob das aktuelle Zeichen eines der vorgegebenen ist und wenn ja, das aktuelle Zeichen am StringBuilder anhängen und das Nächste zum Großbuchstaben machen(die passende Methode hast du ja schon gefunden) und auch diesen anhängen.
Bei der ersten Aufgabe könntest du gucken ob das aktuelle Zeichen ein Leerzeichen ist, wenn ja, überliest du einfach alle nachfolgenden(also hängst es dem Builder nicht an) bis wieder ein normales kommt.
 
H

HalloanAlle

Gast
Danke erstmal für die schnelle Antwort,

also dann werd ich mal neu anfangen ;)
die regex methode mit match werd ich dabei nicht verwenden.

eine frage habe ich noch, ich muss ja noch einen tab bzw ein leerzeichen behalten, also kann ich das nicht einfach überspringen.
 

Neue Themen


Oben