---
title: "Java - Stränghantering"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/129459-java-stränghantering"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Danny"
published: "2005-06-05T09:38:01.000Z"
updated: "2005-06-22T14:46:46.000Z"
replies: 24
views: 2791
page: 1
pages: 2
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/129459-java-stränghantering"
---

# Java - Stränghantering

_Sida 1 av 2._

## #1 — Danny, 2005-06-05T09:38Z

Hej, jag hoppas få lite hjälp med en sak jag grubblade på ett tag. Det är så att jag har en variabel som är en sträng och jag vill plocka ut talet från den och multiplicera det med en konstant och sedan kunna skriva ut det också.

Såhär ser min kodrad ut nu:

```
<b>Brännvidd:</b> $focalLength <b style="color: Silver;"></b>
```

Det är variabeln "focalLength" som jag vill ta och multiplicera med 4.864 för att sedan ta och skriva det istället, gärna med max två decimaler också. Hur bär man sig åt? Jag kan inte Java och har försökt lite med olika kommandon, men det är inget som vill som jag vill.

/red: just det... variabeln brukar se ut såhär ungefär "7.8125mm", kolla här för exempel: [Exempel](http://dannesholk.se/page/photo/album/Övrigt/slides/kvällskörning.html)  det är brännvidden där nere. Det ska stå "38 mm" istället!

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

## #2 — tydal, 2005-06-05T09:42Z

Vad är det för språk du har variabeln i?

Dollartecken före har man ju i php men inte i Javaskript, som är det forum du postat i. Sen pratar du ju också om Java som är ytterligare ett språk...

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

## #3 — Danny, 2005-06-05T09:43Z

Det är Java. Citat från [JAlbum](http://jalbum.net/)  där jag fått mitt fotoalbum ifrån:

> beanshell scripts (interpreted Java)

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

## #4 — tydal, 2005-06-05T09:45Z

Hur gör du för att skriva ut variabeln i html-dokumentet?

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

## #5 — Danny, 2005-06-05T09:48Z

Det gör programmet automatiskt via två stycken htt-filer där koden står: Här är urdrag från den htt-fil som jag ändrar i:

```
<ja:if exists="meta">
<small>
   <b>Datum:</b> $originalDate <b style="color: Silver;">&nbsp;&nbsp;|&nbsp;&nbsp;</b>
   <b>Upplösning:</b> $resolution <b style="color: Silver;">&nbsp;&nbsp;|&nbsp;&nbsp;</b>
   <b>Exponering:</b> $exposureTime <b style="color: Silver;">&nbsp;&nbsp;|&nbsp;&nbsp;</b>
   <b>Bländare:</b> $aperture <b style="color: Silver;">&nbsp;&nbsp;|&nbsp;&nbsp;</b>
   <b>Brännvidd:</b> $focalLength <b style="color: Silver;"></b>
</small>
<br><br>
</ja:if>
```

Observera att jag ändrade mitt förra inlägg också... :)

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

## #6 — Danny, 2005-06-05T09:50Z

Här är hela filen om det skulle hjälpa

Bilagor:

- [slide.zip](https://www.webforum.nu/a/6550.zip)

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

## #7 — tydal, 2005-06-05T09:54Z

Aha, det är inte du som gjort programmet... Då är det ju en annan femma. Det som du klistrat in här är ingen programkod utan bara data till programmet JAlbum som är det som är skrivet i Java.

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

## #8 — tydal, 2005-06-05T09:57Z

> **Danny skrev:**
>
> Här är hela filen om det skulle hjälpa

Prova att byta ut $focalLength mot:

\<%=focalLength \* 4.864 %\>

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

## #9 — Danny, 2005-06-05T10:05Z

Det där fungerar inte eftersom focalLength är en sträng där det står mm i slutet. Som i exemplet "7.8125mm". Det står:

Evaluation error on line 1:

Details:
Sourced file: inline evaluation of: \`\`focalLength \* 4.864 ;'' : Operator: '"\*"' inappropriate for objects

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

## #10 — Danny, 2005-06-05T10:07Z

Annars fungerar ju metoden i sig. Skriver jag t ex

\<%=10 \* 4.864 %\>

så skriver den ut 48.64 i koden

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

## #11 — Danny, 2005-06-05T10:24Z

I Delphi hade jag gjort så att den kopierar strängen från första tecknet till sista siffran, där förekomsten av "mm" finns. Sedan konvertera det till flyttal, avrunda med två decimaler och konvertera tillbaka till sträng. Har provat liknande i Java här, men det bara jävlas.

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

## #12 — tydal, 2005-06-05T10:50Z

Hur kommer det sig att det står "mm" i focalLength? Det borde det ju egentligen inte göra, utan det borde skrivas ut i html-koden. Typ \<b\> $focalLength mm \</b\>.

Kan parseFloat funka kanske?

\<%= parseFloat(focalLength) \* 4.864 %\>

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

## #13 — Danny, 2005-06-05T11:02Z

Det står:

Evaluation error on line 1:
Details:
Sourced file: inline evaluation of: \`\` parseFloat(focalLength) \* 4.864 ;'' : Command not found: parseFloat( java.lang.String )

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

## #14 — Danny, 2005-06-05T11:10Z

aha... något som funkar:

Float.parseFloat(focalLength.substring(0,4));

/red:

iaf när focalLength är mer än 4 tecken :) ...märkte jag nu... men då har jag ju lösninge på g kanske. Jag har upptäckt att man kan köra via Java-konsol så kan man prova mkt enklare.

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

## #15 — Danny, 2005-06-05T11:20Z

Haha!! Got it!!!

focalLength="7.8125mm";
focalLength35=Float.parseFloat(focalLength.substring(0,focalLength.indexOf("mm")));
focalLength35=focalLength35\*4.864;

/red: skrev det där i konsollen så det ser ju lite annorlunda ut, ska fixa så den inte kör via en ny variabel bara...

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

## #16 — sgtpepper, 2005-06-05T11:30Z

Tänk på att om focalLength skulle sakna "mm" i slutet så kommer du få ett StringIndexOutOfBoundsException då indexOf-metoden returnerar -1, så det kan du kanske behöva kolla först.

För att avrunda till två decimaler så kan du använda NumberFormat:

```
<%
  NumberFormat nf = NumberFormat.getNumberInstance();
  nf.setMaximumFractionDigits(2);
%>
<%= nf.format(focalLength35) %> mm
```

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

## #17 — Danny, 2005-06-05T11:44Z

Såhär blev det:

```
<ja:if test="<%=focalLength.length() > 0%>">
<b>Brännvidd:</b> $focalLength <b style="color: Silver;"></b>
<b>Brännvidd35:</b>
<%= Float.parseFloat(focalLength.substring(0,focalLength.indexOf("mm"))) * 4.864 %>
<b style="color: Silver;"></b>
</ja:if>
```

 
Men det blir för många decimaler ibland, har inte lyckats få till avrundningen än...

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

## #18 — Danny, 2005-06-05T11:46Z

> **sgtpepper skrev:**
>
> Tänk på att om focalLength skulle sakna "mm" i slutet så kommer du få ett StringIndexOutOfBoundsException då indexOf-metoden returnerar -1, så det kan du kanske behöva kolla först.
> 
> För att avrunda till två decimaler så kan du använda NumberFormat:
> 
>
>
> ```
> <%
>   NumberFormat nf = NumberFormat.getNumberInstance();
>   nf.setMaximumFractionDigits(2);
> %>
> <%= nf.format(focalLength35) %> mm
> ```

aha!! ...ja, jag märkte det, därför satte jag IF-satsen där, men det där sättet med "fractiondigits" verkar vara nåt...

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

## #19 — Danny, 2005-06-05T11:57Z

Helt lysande sgtPepper!!!!

```
<ja:if test="<%=focalLength.length() > 0%>">
<b>Brännvidd:</b>
<%
focalLengthA95  = Float.parseFloat(focalLength.substring(0,focalLength.indexOf("mm")));
focalLength35   = focalLengthA95 * 4.864;
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
%>
<%= nf.format(focalLengthA95) %> mm
<b style="color: Silver;"></b>
<b>Brännvidd35:</b>
<%= nf.format(focalLength35) %> mm
<b style="color: Silver;"></b>
</ja:if>
```

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

## #20 — Danny, 2005-06-05T11:59Z

Oj! Nu accepterade jag ju kanske fel svar. Det var ju tydal som kom med sparken i rätt riktning så jag lyckades ordna det som var viktigast. Men tack till er båda!!! Det var fint, då kan jag pula vidare...

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

---

Tråden på webben: https://www.webforum.nu/amne/java/129459-java-stränghantering  
Nästa sida: https://www.webforum.nu/amne/java/129459-java-stränghantering/page2.md
