Hur gör man det enklast? Jag vill t.ex. (1 + 1) ska skrivas (1+1). Titta i klassen string, det finns en metod - som jag tyvärr inte minns vad den heter... Tjena! Att använda en StringTokenizer är inte särskilt minneseffektivt. Ett bättre sätt är att skriva en funktion som antingen jobbar med en array eller en StringBuffer. StringBuffer kan vara enklare att använda men vid längre strängar så tjänar man lite prestanda på att använda en array. Jag föreslår att du testar följande: Hej igen, Oj, det gick nog lite fort när jag skrev ihop den lilla kodsnurran, tack för att du uppmärksammade det Andreas. Här kommer en version som fungerar. Andreas säger att skillnaden knappt är märkbar mellan att använda en StringTokenizer och en array eller StringBuffer. Men jag skulle vilja säga att skillnanden är enorm i sättet hur minnesresurser används. Andreas, se följande länk för en bra referens http://developer.java.sun.com/developer/JDCTechTips/2002/tt0305.htmlTa bort mellanslag i en sträng.
Sv: Ta bort mellanslag i en sträng.
Den ersätter iaf ett tecken med ett annat och fungerar som VB:s replace(,,)
/EmmaSv: Ta bort mellanslag i en sträng.
Med replace-metoden i klassen String kan man inte ersätta ett mellanslag med ett tomt tecken.
Prova att plocka bort det manuellt istället mha en StringTokenizer i java.util.
/AndreasSv: Ta bort mellanslag i en sträng.
<code>
public static void removeChar (String sOrig, char cRemove) {
if (sOrig == null) return(null);
int iOrigLen = sOrig.length();
char[] tempArray = new char[iOrigLen];
int j = 0;
char currChar;
for (int i = 0; i < iOrigLen; i++) {
currChar = sOrig.charAt(i);
if (currChar != chRemove) {
tempArray[j] = currChar;
j++;
}
}
// There was nothing to replace, might as well return the
// original string.
if (i == j) return(sOrig);
// Create a new string from the array.
return(new String(tempArray, 0, j));
}
</code>
/KlasSv: Ta bort mellanslag i en sträng.
Visst är det som Klas säger att arrayer är snabba och effektiva... men din kod är felaktig... :-(
Prova följande istället, för skillnaden i prestanda är knappast märkbar:
<code>
public static String removeText(String text, String criteria) {
StringTokenizer st = new StringTokenizer(text, criteria);
String result = "";
while (st.hasMoreTokens()) {
result += (String) st.nextElement();
}
return result;
}
</code>
Mvh, AndreasSv: Ta bort mellanslag i en sträng.
<code>
public String removeWhiteSpaces(String in_sText) {
char[] buf = in_sText.toCharArray();
int index = 0;
while (index < buf.length && !Character.isWhitespace(buf[index]))
++index;
if (index < buf.length) {
int i = index + 1;
while (i < buf.length) {
if (!Character.isWhitespace(buf[i])) {
buf[index] = buf[i];
++index;
}
++i;
}
}
return new String(buf, 0, index);
}
</code>