Char array

  • Themenstarter Themenstarter $$Money$$
  • Beginndatum Beginndatum
$

$$Money$$

Hallo,

Ich habe ein Problem, ich habe ein Char Array in dem eine Anzahl einzelner Buchstaben enthalten sind. Nun möchte ich in diesem Char Array zum Beispiel alle "a" durch ein "b" ersetzen und alle "c" durch ein "d". Das ganze möchte ich dann in einen String packen.
Leider kriege ich es nicht gebacken die Zeichen zu ersetzen. Ich wäre euch dankbar wenn ihr mir helfen könntet.

ps. Natürlich funktinoiert die Methode "strReplace("a","b")" nicht da es sich nicht um einen String handelt in dem ich die Zeichen ersetzen will...

MfG:

Money
 
Zuletzt bearbeitet von einem Moderator:
Hallo Money,

falls ich dich richtig verstanden habe, sollte dir das hier helfen:

Code:
    public static char[] replace(char[] ch, char search, char replace) {
        for (int i = 0; i < ch.length; i++) {
            char c = ch[i];
            if (c == search)
                ch[i] = replace;
        }
        return ch;
    }

    public static void main(String[] args) {
        char[] test = { 'a', 'b', 'c', 'd', 'a', 'b', 'c', 'd' };
        System.out.println(test); // abcdabcd
        test = replace(test, 'a', 'x');
        System.out.println(test); // xbcdxbcd
        test = replace(test, 'b', 'y');
        System.out.println(test); // xycdxycd
    }

Aber warum arbeitest du nicht einfach mit einem String?

Mit freundlichen Grüßen

Basti
 
Warum nicht so?

Java:
public final class CharArray extends Object
{
	public CharArray()
	{
		super();

		String s = "der apfel faellt nicht weit vom stamm," +
				" denn der bus faehrt schnell," +
				" und ich habe keine ahnung wer cameron diaz ist," +
				" obwohl d sehr ähnlich c++ ist!";
		char[] array = s.toCharArray();

		System.out.println(this.doWhatYouEverWillDo(array));
	}
	private final String doWhatYouEverWillDo(char[] array)
	{
		String result = String.valueOf(array).replace("a", "b").replace("c", "d");
		return(result);
	}
	public final static void main(String[] args)
	{
		new CharArray();
	}
}

Ist doch egal obs vorher oder danach ein String wird.
Jeweils ein Satzteil wo ein Nomen mit dem jeweiligen Anfangsbuchstaben vorkommt. Bitte schlagt mich nicht, mir ist nichts besseres eingefallen. Und natürlich alles klein wegen CS.
 
Zuletzt bearbeitet:
*geändert*
Kannst du aber auch bitte sagen warum nicht? Google spuckt nichts aus, außer dass man bei direkten Intialisierungen " " verwenden soll, was eigendlich mehr oder weniger klar ist, und laut eines Tutorials macht
Java:
String myString = "Hallo";
das selbe wie
Java:
String myString = null;
myString = new String("Hallo");
 
Findbugs sagt dir gerne was dazu ;)

new String erstellt ein neues Objekt und umgeht damit den String-Cache. Während ein valueOf und auch ein String x = "y" die gecachten Werte verwendet.

Führ das mal aus:

Java:
String c = "c";
String c2 = "c";
String c3 = String.valueOf("c");
String c4 = new String("c");
System.out.println(System.identityHashCode(c));
System.out.println(System.identityHashCode(c2));
System.out.println(System.identityHashCode(c3));
System.out.println(System.identityHashCode(c4));

System.out.println(c == c2);
System.out.println(c == c3);
System.out.println(c == c4);

Und der Grund warum man in java Strings mit equals vergleicht ist auch eben der, dass man sich nicht sicher sein kann, dass nicht doch einer ein new String verwendet.
 
Vielen Dank für eure schnelle Hilfe. Hat alles einwandfrei so funktioniert wie ich mir das erhofft hatte.

ps. Danke für den Tipp mit den Strings...

MfG:

Money
 
Zurück