Swift Academy · Lektion

Locale-medveten formatering

Formatera tal, datum och valutor enligt locale.

Lektion 3 av 413 steg

Locale-medveten formatering är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 4 lektioner.

Tal är inte universella

Talet en miljon två hundra tusen skrivs som 1,200,000.50 i USA, 1.200.000,50 i Tyskland och 12,00,000.50 i Indien. Om du hårdkodar avgränsare eller format fungerar de inte för större delen av världen. Swift:s FormatStyle-API hanterar detta korrekt för varje lokal.

import Foundation
let value = 1_200_000.5
print(value.formatted()) // uses current locale

Ingången formatted()

De flesta standardtyper – tal, datum, mått och listor – har metoden formatted(). Utan argument använder den förnuftiga lokaliseringsanpassade standardvärden; ange en stil för att anpassa resultatet.

import Foundation
let n = 1234.567
print(n.formatted())                      // default
print(n.formatted(.number.precision(.fractionLength(2))))

Talformat

.number är arbetshästen. Du kan konfigurera gruppering, antal decimaler, avrundning och visning av tecken på ett flytande sätt. Lokalen styr fortfarande de faktiska skiljetecknen.

import Foundation
let x = 1234.5
print(x.formatted(
    .number
    .grouping(.automatic)
    .precision(.fractionLength(0...2))))

Valutaformattering

För pengar placerar .currency(code:) symbol, gruppering och decimaler korrekt för lokalen. Samma belopp visas som $1,200.00 eller 1.200,00 €€ beroende på användarens region – bygg aldrig valutasträngar för hand.

import Foundation
let price = 1200.0
print(price.formatted(.currency(code: "USD")))
print(price.formatted(.currency(code: "EUR")))
print(price.formatted(.currency(code: "JPY")))

Procentformattering

.percent multiplicerar med 100 och lägger till lokalens procenttecken, samtidigt som den hanterar de mellanrum som vissa språk kräver mellan talet och symbolen.

import Foundation
let ratio = 0.875
print(ratio.formatted(.percent))
print(ratio.formatted(.percent.precision(.fractionLength(1))))

Åsidosätta lokalen

Som standard använder formateringen Locale.current. Om du vill tvinga fram en specifik lokal – för testning eller för att visa ett värde i en fast region – kedjar du .locale(_:) till valfri stil.

import Foundation
let value = 1234567.89
let german = Locale(identifier: "de_DE")
print(value.formatted(.number.locale(german)))
// 1.234.567,89

Datumformatering

Datum har egna stilar. .dateTime låter dig sätta samman de fält du vill ha (år, månad, dag, timme), och systemet ordnar dem enligt lokalen – månad-dag-år i USA, dag-månad-år i stora delar av Europa.

import Foundation
let now = Date()
print(now.formatted(
    .dateTime.year().month().day()))
print(now.formatted(date: .long, time: .shortened))

Relativa datum

RelativeDateTimeFormatter och stilen .relative skapar uttryck som ”för 2 timmar sedan” eller ”om 3 dagar”, helt översatta. Utmärkt för flöden och tidsstämplar.

import Foundation
let past = Date().addingTimeInterval(-3600)
let text = past.formatted(
    .relative(presentation: .named))
print(text) // e.g. "1 hour ago"

Mått och enheter

Measurement formaterar fysiska storheter och kan konvertera enheter. Lokalen avgör om kilometer eller miles ska visas, och stilen lokaliserar själva enhetsnamnet.

import Foundation
let distance = Measurement(value: 5, unit: UnitLength.kilometers)
print(distance.formatted())
print(distance.formatted(
    .measurement(width: .wide)))

Listor och namn

Till och med när objekt sammanfogas tas språket i beaktande. .list(type:) ger apples, oranges, and pears på engelska och rätt konjunktion och avgränsare på andra språk – undvik att själv lägga in kommatecken och ordet and.

import Foundation
let fruits = ["apples", "oranges", "pears"]
print(fruits.formatted(.list(type: .and)))
print(fruits.formatted(.list(type: .or)))

Tolka tillbaka

FormatStyles kan konverteras åt båda hållen. En stils parseStrategy (eller att initiera ett värde från en sträng med stilen) omvandlar lokaliserad text tillbaka till ett tal eller datum och följer samma lokalregler.

import Foundation
let style = Decimal.FormatStyle.Currency(code: "USD")
let amount = try? Decimal("$1,234.50", format: style)
print(amount ?? 0)

Snabbkontroll

Kom ihåg rätt verktyg för pengar.

Sammanfattning

Du lärde dig lokaliseringsanpassad formatering med FormatStyle:

  • formatted() ger lokaliseringskorrekta standardvärden; ange en stil för att anpassa resultatet.
  • .number, .currency(code:), .percent, .dateTime, .relative, .measurement och .list täcker de flesta behov.
  • Kedja .locale(_:) för att åsidosätta lokalen; stilar kan även tolka tillbaka text.
  • Bygg aldrig avgränsare, valutasymboler eller datumordningar manuellt.
Gratis att börja

Lär dig Swift med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
122
Lektioner
409

Vanliga frågor

Är lektionen ”Locale-medveten formatering” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Locale-medveten formatering”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Locale-medveten formatering”?

Formatera tal, datum och valutor enligt locale. Ni övar på Swift Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Swift Academy?

Du behöver inga förkunskaper. Utbildningen i Swift Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Locale-medveten formatering”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Swift Academy-lektionen?

Ja. Varje Swift Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. String Catalogs och lokaliserade strängar
  2. Pluralisering och Stringsdict
  3. Locale-medveten formatering
  4. Höger-till-vänster och layout-riktning
← Tillbaka till Swift Academy