tags:

views:

321

answers:

3

I have two strings in a java program, which I want to mix in a certain way to form two new strings. To do this I have to pick up some constituent chars from each string and add them to form the new strings. I have a code like this(this.eka and this.toka are the original strings):

String muutettu1 = new String();
String muutettu2 = new String();
muutettu1 += this.toka.charAt(0) + this.toka.charAt(1) + this.eka.substring(2);
muutettu2 += this.eka.charAt(0) + this.eka.charAt(1) + this.toka.substring(2);
System.out.println(muutettu1 + " " + muutettu2);

I'm getting numbers for the .charAt(x) parts, so how do I convert the chars to string?

+4  A: 

The obvious conversion method is Character.toString.

A better solution is:

String muutettu1 = toka.substring(0,2) + eka.substring(2);
String muutettu2 = eka.substring(0,2) + toka.substring(2);

You should create a method for this operation as it is redundant.

The string object instatiantiation new String() is unnecessary. When you append something to an empty string the result will be the appended content.

Thomas Jung
thx for stealing my answer
jitter
This is simple string manipulation, why should is "steal" it? Your code does 2 useless string allocations and a.substring(0,1) + a.substring(1,2) == toka.substring(0,2). So I could not steal anything from you. Substring is not rocket science.
Thomas Jung
Rep WAR ! Let's get ready to **rumble** !! ;-)
JRL
Oh no. Let's be peaceful.
Thomas Jung
A: 

Just use always use substring() instead of charAt()

muutettu1 += toka.substring(0,1) + toka.substring(1,2) + eka.substring(2);
muutettu2 += eka.substring(0,1) + eka.substring(1,2) + toka.substring(2);

e.g. when the position arent isn't fixed values but variables do

muutettu1 += toka.substring(x,x+1) + toka.substring(y,y+1) + eka.substring(z);
muutettu2 += eka.substring(x,x+1) + eka.substring(y,y+1) + toka.substring(z);

where x,y,z are the variables holding the positions from where to extract

jitter
+4  A: 
StringBuilder builder = new StringBuilder();
builder
   .append(this.toka.charAt(0))
   .append(this.toka.charAt(1))
   .append(this.toka.charAt(2))
   .append(' ')  
   .append(this.eka.charAt(0))
   .append(this.eka.charAt(1))
   .append(this.eka.charAt(2));
System.out.println (builder.toString());
I think, your result will be wrong. subString(2) is the string beginning with the index 2.
Thomas Jung
Yep, I missed that. Regardless, append is an overloaded method and you can pass it Strings as well. The salient point here was to not use String directly and use StringBuilder (or StringBuffer if on older JRE) to minimize the performance cost.
a + b will be compiled to new StringBuilder().append(a).append(b).toString() anyway.
Thomas Jung