#  Hur "string" fungerar i JS
```
author: krm
created: 2018-09-27
status: alpha
```

# 👁️‍🗨️ Om vad man behöver kunna om strings/strängar?

- En mycket vanlig datatype som använda i många olika sammanhang.
- Det svenska namnet är sträng, men i daglit tal förekommer ofta den 
  engelska varianten.
- Förstålse uppyggnadne av och metoder implementer i strängar. 


# ❓ Vad är en sträng?

Vi ger här en ungefärligt deinition och förklaring, se länk för exakt 
definition.

- Helt enkelt en vanligt test som vi kan använda i js.
- Det är en följd av tecken som skapar en text.
- Dessa tecken kan vara i UNICODE, vilket gör det enkelt för oss.
- De kan också vara "escape sequences".

# 📣 Några kommentar om strängar

Strängar beter sig i mycket som array:er men är inga arrayer.

- De är "oförändliga(immutable)"
- Du kan alltså alldrig ändra ett tecken genom 
  t.ex: let a= "abba"; a[2]="b";
- med mera.


# 🚜 Strängar används mycket 

Det finns väldigt många siituationer då du behäver en string.

- Om du läser in data ifrån en fil.
- Om du ska skriva något till en användare.
- Om du ska besvara ett anrop(request) med ett html dokument.


# 🀄️ Strängar i alla språk?

Stängar finns i alla språk.

- I visa äldre språk så som C har inte stöd för UNICODE.
- Visa enkla metoder för sträng hantering sakans i t.ex. C++.
- I php blir mycket automatiskt typomvandlat till strängar.

# 🔄 Hur konvertera något till en sträng?

Det är ofta nödvändigt att typomvandla till en sträng.

- let one = String(1);
- ""+1;
- Number(1).toString();
- Om du har ett objekt så kan du implmentera en method *toString* för 
  att få automatisk omvandling. 


# 🔬 Hur vet vi att en variabel är en sträng?

Det är faktiskt rätt så lätt.

- let b = "Bamse";
- typeof "Bamse" === "string";
- typeof "abba";

# Escape sekvens

Escape sekvens är specialtecken som påverkar utskriften. Du kan använda 
sammat tecken som in terminalen.

- "\n" betyder ny rad.
- "\t" betyder ny tab. 
- Använd gärna ett biblotek fom "color" för att få färg på dina 
  utskrifter.

# Sammanfoga text

Kan göras på olika sätt och kan leda till problematiska bugar. 

- "a "+"b"
- b.concat("[sic!]")
- Kod: `${a} ${b}`

# Få ett tecken

Fungerar som för en array

- a[0];

indexOf

# För att hitta tecken.

- "hej".indexOf("e"):
- "hej annna".indexOf("anna");
- "hej anna anna".indexOf("anna");
- "hej anna anna".indexOf("q");

# split

split används för att dela uppe en string.

- Du kan använda det till parsning.
- "anna abba apa".split(" ");
- "anna abba apa".split("a");

# slice

Fungerar likande som för en array.

- a.slice(1,3)

# Fler metoder för hantera strängar?

Stränghantering

- a[0].toUpperCase();

# Exempel

```js
a[0].toUpperCase() + a.slice(1,3)

function foo(text) {
result = []; 
for(let i of a) 
{ 
if(i !== "och") { 
result.push(i[0].toUpperCase() + i.slice(1));
} 
} 
result.join(" ");
}
```
