String umbenennen

yidaki

Erfahrenes Mitglied
Hallo ich hoffe das ich hier Hilfe finde. Es ist wohl
wahrscheinlich kein alzu großes Problem, aber ich
finde einfach keine Lösung..

Ich möchte in einem Java Programm einen String ein Zeichen austauschen.

Code:
public static void main(String[] args){
		String s = "52347,";
		
		System.out.println(s);
		
		for (int i=0; i <= s.length(); i++){
			if (s.charAt(i) == (","))       //substring(i) == (","))
			    s.charAt(i) = ("-");         //replace(String s.substring(i),"-");//charAt(i) == ("-")		   		   
			s = s.substring(0, s.length()-1);
			System.out.println(s);		
		}
	}
}

Der Code soll später auf einem mehrdimensionalen Array ausgeführt werden, aber das ist erst mal die Grundvorraussetzung um damit zu beginnen. Es sollte am besten ohne die Funktion Replace gemacht werden.

thx
 
Zeichen in String ersetzen

Original geschrieben von yidaki
Hallo ich hoffe das ich hier Hilfe finde. Es ist wohl
wahrscheinlich kein alzu großes Problem, aber ich
finde einfach keine Lösung..

Ich möchte in einem Java Programm einen String ein Zeichen austauschen.

Code:
public static void main(String[] args){
		String s = "52347,";
		
		System.out.println(s);
		
		for (int i=0; i <= s.length(); i++){
			if (s.charAt(i) == (","))       //substring(i) == (","))
			    s.charAt(i) = ("-");         //replace(String s.substring(i),"-");//charAt(i) == ("-")		   		   
			s = s.substring(0, s.length()-1);
			System.out.println(s);		
		}
	}
}


Der Code soll später auf einem mehrdimensionalen Array ausgeführt werden, aber das ist erst mal die Grundvorraussetzung um damit zu beginnen. Es sollte am besten ohne die Funktion Replace gemacht werden.

thx

Gemäß API sollte es so gehen:
Code:
String s = "52347,";
String newString = s.replace(',' , '-');

Ohne Schleife... ;)
 
ok danke, habs auch mir der funktion substring hinbekommen.

Code:
public class L1101 
{
	
	public static void main(String[] args)
	{
		String s = "52347,";
		
		System.out.println(s);
		
		for (int i=0; i < s.length(); i++)
		{
			if (s.charAt(i) == ',') //substring(i) == (","))
			{		   
			System.out.println("Das ,steht an der Stelle" + i);
			s = s.substring(0,i) + '-' + s.substring(i+1,s.length());
			}
		}
		System.out.println("Der geänderte String lautet: " + s );
	}

}
 
Auch wenn es im Moment nicht viel ausmachen scheint. Trau Snape, nimm die replace-Funktion.
Ausserdem sollte man sich bei Java-Programmierung angewöhnen 2 Blicke in die Java-Api zu nehmen - häufig ist das Problem da schon gelöst.
 
Wenn du unbedingt ein Zeichen anhand eines bestimmten Index (hier letztes Zeichen) ändern willst:

StringBuffer - setCharAt ist dein Freund
Code:
setCharAt

public void setCharAt(int index,
                      char ch)

    The character at the specified index of this string buffer is set to ch. The string buffer is altered to represent a new character sequence that is identical to the old character sequence, except that it contains the character ch at position index.

    The index argument must be greater than or equal to 0, and less than the length of this string buffer.

    Parameters:
        index - the index of the character to modify.
        ch - the new character. 
    Throws:
        IndexOutOfBoundsException - if index is negative or greater than or equal to length().
    See Also:
        length()

Code:
public class L1101 
{	
	public static void main(String[] args)
	{
		String s = "52347,";
		StringBuffer sb = new StringBuffer(s);
                sb.setCharAt(5,s.length());
		System.out.println(s);		
		System.out.println("Der geänderte String lautet: " + s );
	}

}

Ansonsten wenn du alle , durch . tauschen willst dann mach es so wie Snape gesagt hat.
 
Hab nicht damit gerechnet das der code so schlimm war, ich bin anfänger
und bin erstmal froh wenn´s ueberhaupt klappt! Aber durch eure verbesserungs-
vorschläge bekomm ich dann am schluss vieleicht sogar noch einen einiger-
massen sauberen code hin.

thx
 
Wenn du unbedingt ein Zeichen anhand eines bestimmten Index (hier letztes Zeichen) ändern willst:

StringBuffer - setCharAt ist dein Freund

Währe zu schön gewesen um wahr zu sein.....

Ansonsten wenn du alle , durch . tauschen willst dann mach es so wie Snape gesagt hat.

Es geht hier um eine schulaufgabe und ich würde im praktischen Fall auf jeden Fall auch die replace Funktion bevorzugen, aber damit sollen wir halt nicht arbeiten.

Ich werd einfach mal das Programm schicken und dann wirds bestimmt etwas klarer werden was genau das Problem ist.



Code:
package gotojava;
/**
 * @author kik
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
class Table_Ausgabe
{
	public static String[][] ausgabe(String[][] testa)
	{
		for (int i = 0; i < 5; i++)
		{
			for (int j = 0; j < 5; j++)
			{
				if (i >= 0)
				{
					System.out.print(testa[i][j] + "\t");
					//indexof String oder character übergeben --> gesuchte Zeichen ',' --> position des gesuchten Zeichens
				}
				if (j == 4)
				{
					System.out.println();
				}
				else
					if (i >= 1 && j == 2)
					{
						System.out.print("\t\t");
					}
			}
		}
		return null;
	}
}
class Table_Formatieren
{
	public static String[][] format(String[][] testa)
	{
		for (int i = 0; i < 5; i++)
		{
			for (int j = 0; j < 5; j++)
			{
				for (int k = 0; k < testa.length; k++)
				{
					if (i > 0 && j == 2 && k == 1)
					{
						System.out.print(k);
					}
				}
					if (i >= 0)
					{
						System.out.print(testa[i][j] + "\t");
						//indexof String oder character übergeben --> gesuchte Zeichen ',' --> position des gesuchten Zeichens
					}
					if (j == 4)
					{
						System.out.println();
					}
					else
						if (i >= 1 && j == 2)
						{
							System.out.print("\t\t");
						}
				}
			}
		return null;
		}

	}

	public class L1101
	{
		public static void main(String[] args)
		{
			String table[][] = new String[5][5]; //"52347,";
			table[0][0] = "LosNr.";
			table[0][1] = "Laenge";
			table[0][2] = "Position";
			table[0][3] = "Profil";
			table[0][4] = "Liefetermin kW";
			table[1][0] = "52347,";
			table[1][1] = "1180,";
			table[1][2] = "L,";
			table[1][3] = "765,";
			table[1][4] = "32;";
			table[2][0] = "52347,";
			table[2][1] = "1180,";
			table[2][2] = "R,";
			table[2][3] = "465,";
			table[2][4] = "32;";
			table[3][0] = "52347,";
			table[3][1] = "920,";
			table[3][2] = "O,";
			table[3][3] = "765,";
			table[3][4] = "32;";
			table[4][0] = "52347,";
			table[4][1] = "920,";
			table[4][2] = "U,";
			table[4][3] = "765,";
			table[4][4] = "32;";
//-------------------------------------------------------------------------------------------------------------			
                    
                              Table_Ausgabe.ausgabe(table);
			System.out.println();
			Table_Formatieren.format(table);
			{
			}
		}
	}

Ich weiss der code ist wahrscheinlich nicht besonders sauber geschrieben, aber
ich bin ja noch im lernstadium ;-)

thx
 
Original geschrieben von yidaki

Ich weiss der code ist wahrscheinlich nicht besonders sauber geschrieben, aber
ich bin ja noch im lernstadium ;-)

Dann lern mal ganz fix OOP, denn das was ich da sehe mit jeweils eine Klasse mit einer statischen Methode tut meinen augen doch sehr weh ;)

Und nein mir wird nicht klar was du genau vorhast.

Sag doch mal genau in einem Satz was du willst:

Ich will das alle "." in dem Array table durch ein "," ersetzt wird.
Oder aber:
ich will das nur das letzte "," in dem Array table durch ein "." ersetzt wird.

Ich habe kein Interresse mir deine kommischen hin und her schleifen auseinanderzunehmen
um zu erfahren was du haben willst.
 
Ok das hier ist die Ausgabe von dem Code;

LosNr. Laenge Position Profil Liefetermin kW
52347, 1180, L, 765, 32;
52347, 1180, R, 465, 32;
52347, 920, O, 765, 32;
52347, 920, U, 765, 32;


ok... ist eigentlich ganz einfach. Ich will eigentlich nicht
mehr wie auf auf ein Zeichen in dem Array zuzugreifen.
z.B. um alle "," um sie mit einem "-" auszutauschen, oder
in der Spalte "Position" die Buchstaben klein auszugeben.
 
Zurück