Strängföremål håller fast ordnade sekvenser av byte, vanligtvis tecken, vanligtvis för att bilda bitar av mänsklig läsbar text. De är en mycket vanlig objekttyp på alla programmeringsspråk, och Rubin har ett antal sätt på hög nivå och några lågnivåer att skapa, komma åt och manipulera String-objekt.
Strängar skapas oftast med en String letteral. EN bokstavlig är en speciell syntax på Rubin-språket som skapar ett objekt av en specifik typ. Till exempel, 23 är en bokstavlig som skapar enFixnum objekt. Vad gäller strängbokstäver finns det flera former.
Enkelcitater och dubbelciterade strängar
De flesta språk har en strängbokstav som liknar detta, så det kan vara bekant. Typen av citat, '(enstaka offert, apostrof eller hårt citat) och "(dubbelcitationstecken eller mjuk offert) används för att omsluta strängbokstäver, allt mellan dem förvandlas till strängobjekt. Följande exempel visar detta.
Men det finns vissa skillnader mellan enstaka och dubbla citat. Dubbla citat eller mjuka citat möjliggöra viss magi att hända bakom kulisserna. Mest användbart är interpolering inuti strängar, användbart för att införa värdet på en variabel i mitten av en sträng. Detta uppnås genom att använda
#{ … } sekvens. Följande exempel ber dig om ditt namn och hälsar dig med interpolering för att infoga ditt namn i den strängbokstav som skrivs ut.Observera att valfri kod kan gå in i hängslen, inte bara variabla namn. Ruby kommer att utvärdera den koden och vad som än returneras kommer det att försöka infoga den i strängen. Så du kan lika lätt säga "Hej, # {gets.chomp}" och glöm det namn variabel. Det är dock god praxis att inte sätta långa uttryck i hängslen.
Enstaka citat, apostrofer eller hårda citat är mycket mer restriktiva. Inuti de enda offerterna kommer Ruby inte att utföra någon interpolering eller flygsekvenser annat än att undkomma enstaka citatkaraktär och själva bakslaget (\' och \\ respektive). Om du inte tänker använda interpolering rekommenderas att du använder enstaka offert oftare än inte.
Följande exempel försöker interpolera en variabel inuti enstaka citat.
Om du kör detta får du inget fel, men vad skrivs ut?
Interpolationssekvensen passerade genom otolkad.
När ska jag använda enstaka och dubbla citat
Det handlar om stil. Vissa föredrar att använda dubbla citat hela tiden om de inte blir obekväma. Andra skulle hellre använda enstaka citat om inte interpoleringsbeteendet är avsett. Det finns inget i sig farlig om att använda dubbla citat hela tiden, men det gör viss kod lättare att läsa. Du behöver inte läsa en sträng när du läser igenom koden om du vet att det inte finns några interpolationer i den eftersom du vet att själva strängen inte kommer att ha några biverkningar. Så vilken bokstavlig strängform du använder är upp till dig, det finns inget riktigt rätt och fel sätt här.
Escape Sekvenser
Tänk om du, i en strängbokstav, vill inkludera en citattecken? Till exempel strängen "Steve sa" Moo! " fungerar inte. Och varken kommer "Kan inte röra det här!". Båda dessa strängar inkluderar citatkaraktären inuti strängen, vilket effektivt slutar strängen bokstavligen och orsakar ett syntaxfel. Du kan byta citattecken, som 'Steve sa "Moo!"', men det löser inte problemet. Istället kan du undgå alla citatkaraktär inuti strängen, och den kommer att förlora sin speciella betydelse (i detta fall är den speciella betydelsen att stänga strängen).
För att undkomma en karaktär, beroende på den med backslash-karaktären. Backslash-karaktären säger Ruby att ignorera alla speciella betydelser som nästa tecken kan ha. Om det är ett matchande citattecken ska du inte avsluta strängen. Om det är ett hashtecken bör du inte starta ett interpoleringsblock. Följande exempel visar denna användning av backslash för att undkomma specialtecken.
Backslash-tecknet kan användas för att ta bort någon speciell betydelse från följande tecken, men förvirrande kan det också användas för att beteckna speciellt beteende i dubbelciterade strängar. De flesta av dessa speciella beteenden har att göra med att infoga tecken och bytesekvenser som inte kan skrivas eller representeras visuellt. Inte alla strängar är teckensträngar eller kan innehålla kontrollsekvenser avsedda för terminalen och inte användaren. Ruby ger dig möjligheten att sätta in dessa typer av strängar med hjälp av backslash-flyktecken.
- \ n - En ny linje-karaktär. De sätter metoden gör detta automatiskt, men om du vill infoga en i mitten av en sträng, eller strängen är avsett för något annat än sätter kan du använda den här för att infoga en ny linje i en sträng.
- \ t - Ett flikkaraktär. Fliktecknet flyttar markören över (på de flesta terminaler) till en multipel av 8, så det är mycket användbart för att visa tabelldata. Det finns emellertid bättre sätt att göra detta, och att använda flikens karaktär anses vara lite arkaiskt eller hackish.
- \ nnn - Ett motstreck följt av 3 siffror anger ett ASCII-tecken representerat av 3 oktala siffror. Varför oktal? Mest av historiska skäl.
- \ xnn - Ett snedstreck, ett x och två hexsiffror. Samma som den oktala versionen, endast med sexkantiga siffror.
Du kommer antagligen aldrig använda de flesta av dessa, men vet att de finns. Och kom ihåg att de bara arbetar i dubbelciterade strängar.
På nästa sida diskuteras flersträngssträngar och en alternativ syntax för strängbokstäver.
Flersträngssträngar
De flesta språk tillåter inte flera linjers strängbokstäver, men Ruby gör det. Det finns inget behov av att avsluta dina strängar och lägga till fler strängar för nästa rad. Ruby hanterar flera linjer stränglitteraler helt bra med standard syntax.
Alternativ syntax
Som med de flesta andra bokstäver, ger Ruby en alternativ syntax för strängbokstäver. Om du till exempel använder många citattecken i dina bokstäver, kanske du vill använda den här syntaxen. När du använder den här syntaxen är en stilfråga, behövs de vanligtvis inte för strängar.
Om du vill använda den alternativa syntaxen använder du följande sekvens för enstaka citerade strängar % q {...}. På liknande sätt använder du följande syntax för dubbla citerade strängar % Q {...}. Denna alternativa syntax följer alla samma regler som deras "normala" kusiner. Observera också att du kan använda alla tecken du vill istället för hängslen. Om du använder en stag, kvadratisk konsol, vinkelfäste eller parentes, kommer det matchande tecknet att avsluta det bokstavliga. Om du inte vill använda matchande tecken kan du använda vilken symbol som helst (inte bokstäver eller siffror). Den bokstavliga kommer att stängas med en annan av samma symbol. Följande exempel visar flera sätt att använda denna syntax.
Den alternativa syntaxen fungerar också som en sträng med flera linjer.