---
title: "få en string baklänges - hur?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/89395-få-en-string-baklänges-hur"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "tovelainen"
published: "2003-11-01T10:34:35.000Z"
updated: "2003-11-02T11:29:38.000Z"
replies: 8
views: 1622
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/89395-få-en-string-baklänges-hur"
---

# få en string baklänges - hur?

## #1 — tovelainen, 2003-11-01T10:34Z

Hallå ja - nån som kan hjälpa till här?

Håler på med en metod som ska vända en string baklänges.

Ett ord skrivs in i huvudprogrammet. 
Och så skickas "baklanges(String enText)" för o få ordet bakvänt som sen ska skickas tillbaka till mitt program.

enda jag har importerat är extra-paketet och kan inte ta in fler paket än det.

himla mycket tack på förhand från en flitig java-elev

Permalänk: https://www.webforum.nu/p/89395

## #2 — pettsson, 2003-11-01T11:03Z

Det enklaste sättet bör vara m.h.a. for-slingor, typ så här

```
public String baklanges(String enText) {
String tempText = "";
for(int i = (enText.length() - 1); i >= 0; i--) {
tempText .= enText.charAt(i);
}
return tempText;
}
```

Detta borde funka, men jag kan inte kompilera den nu och kolla

Permalänk: https://www.webforum.nu/p/1195921

## #3 — SPiN, 2003-11-01T13:20Z

Eller helt enkelt:

```
StringBuffer stringBuffer = new StringBuffer( "!dlrow olleH" );
String str = stringBuffer.reverse().toString();
```

Permalänk: https://www.webforum.nu/p/1195963

## #4 — tovelainen, 2003-11-01T13:42Z

Tack spin, men jag måste lösa det lite mer som Pettsson föreslår. Så här nånting ska det se ut men jag får det inte helt att funka:

\---

  public static void baklanges(String enText) {

    String ut="";
    for (int bokstav = (enText.length() - 1); bokstav \>= 0; bokstav--) {
     ut= enText.charAt(bokstav);
    }
    System.out.print(ut);

  }

\---
Det verkar va fel på så vis att på rad 6 är resultatet en char, men typen jag beöver är String.
Hur fixar man det?
Tack så hjärtligt för tidigare svar!

Permalänk: https://www.webforum.nu/p/1195971

## #5 — SPiN, 2003-11-01T13:54Z

```
public class Misc {
     public static String reverse( String s ) {
          StringBuffer result = new StringBuffer( "" );

          for( int i = s.length() - 1; i >= 0; i-- )
               result.append( s.charAt( i ) );

          return result.toString();
     }
}
```

Anropas:

```
String str = "!dlrow olleH";
str = Misc.reverse( str );
```

Permalänk: https://www.webforum.nu/p/1195978

## #6 — pettsson, 2003-11-02T10:52Z

Om jag citerar mig själv lite grann
"tempText .= enText.charAt(i);"
.= är det samma som append har jag för mig, använde det så en gång själv iaf :)

Permalänk: https://www.webforum.nu/p/1196338

## #7 — SPiN, 2003-11-02T11:15Z

.= finns inte Java, bara i PHP. I Java skriver man += för att konkatenera. Men en konkatenering i en loop är inte det optimalaste sättet att lösa någonting på, det är mycket bättre att skapa en StringBuffer som man fyller istället.

Permalänk: https://www.webforum.nu/p/1196345

## #8 — tovelainen, 2003-11-02T11:17Z

Tack så mycket för hjälpen!
Såhär blev det till slut. Nu fungerar det!

\---
  public static void baklanges(String enText) {
    String ut="";

    for (int bokstav = (enText.length() - 1); bokstav \>= 0; bokstav--) {
     ut+= enText.charAt(bokstav);
    }
    System.out.print(ut);

\---

Permalänk: https://www.webforum.nu/p/1196347

## #9 — aasah, 2003-11-02T11:29Z

> **tovelainen skrev:**
>
> ut= enText.charAt(bokstav);
> 
> Det verkar va fel på så vis att på rad 6 är resultatet en char, men typen jag beöver är String.
> Hur fixar man det?
> Tack så hjärtligt för tidigare svar!

Nog så riktigt. Säg att texten är "Hej" och bokstav är 2. Då blir 
enText.charAt(bokstav) = 'j', dvs bokstaven 'j'. Allmänt sett kan du göra om bokstaven j till strängen "j" på flera sätt, bl.a.:

char ch = j;
String j = ch + ""; //==\> 'j' + tom sträng = "j"

eller

Character ch = new Character(j);
String j = ch.toString();

MEN det löser inte ditt problem rakt av eftersom då blir det:
ut= enText.charAt(bokstav) + "";
Vilket innebär i mitt ex ovan att ut blir lika med, för varje varv i slingan:
ut = ""; //före
ut = "j";
ut = "e";
ut = "H"; //efter
och det var ju inte det du ville. 

Så **i princip** kan du göra så här:
ut= ut + enText.charAt(bokstav);
För då adderas nästa hela tiden till det du redan har, alltså:
ut = ""; //före
ut = "j";
ut = "je";
ut = "jeH"; //efter

**MEN** man brukar inte använda String för att addera bokstäver, minst av allt i for-slingor och dylikt. En String kan nämligen inte ändras, så för varje del i ett adderande uttryck skapas och slängs en förskräcklig massa String:ar. Det tar en massa onödig tid och minne. Alltså brukar man i stället använda StringBuffer. Ett speciellt objekt som just är gjort för att manipulera strängar och där innehållet i den redan skapade StringBufferten ändras istället för att massor av onödiga temporära objekt skapas och slängs... Dess syntax kan du se ovan i tidigare svar, eller gå till Javas API och läs.

Permalänk: https://www.webforum.nu/p/1196354

---

Tråden på webben: https://www.webforum.nu/amne/java/89395-få-en-string-baklänges-hur
