Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Tip
Den här artikeln är en del av avsnittet Grunderna för utvecklare som redan känner till minst ett programmeringsspråk och lär sig C#. Om du inte har använt programmering tidigare börjar du med självstudierna Komma igång först.
Kommer du från ett annat språk? Strängsammanfogning i C# med + liknar Java och JavaScript. C# lägger till stränginterpolation ($"{x}"), som liknar JavaScript-mallliteraler och Python f-strängar, som det bästa sättet att skapa strängar från variabler. För att bygga strängar i en loop erbjuder C# StringBuilder, ungefär som Javas StringBuilder.
Sammanfogning lägger till en sträng i slutet av en annan för att skapa en ny sträng. C# ger dig flera sätt att sammanfoga, och det bästa valet beror på om du ansluter en fast uppsättning värden eller en samling, eller om du skapar en sträng bit för bit i en loop.
Sammanfoga strängliteraler
När du sammanfogar strängliteraler eller konstanter med +sammanfogar kompilatorn dem vid kompileringstillfället. Att dela upp en lång literal över flera rader förbättrar läsbarheten i källan utan någon körningskostnad:
// The compiler joins adjacent string literals at compile time,
// so splitting a long literal across lines has no run-time cost.
string message =
"This is the first sentence of a longer message. " +
"This is the second sentence. " +
"This is the third and final sentence.";
Console.WriteLine(message);
// => This is the first sentence of a longer message. This is the second sentence. This is the third and final sentence.
Använda operatorerna + och +=
Om du vill kombinera strängvariabler använder du operatorn + för att skapa en ny sträng eller += för att lägga till en befintlig. Operatorn + är intuitiv och kompilatorn kopierar endast stränginnehållet en gång även när du kedjar flera operatorer i ett enda uttryck:
string name = "Alex";
string day = "Monday";
// Use + to build a string from variables and literals.
string greeting = "Hello " + name + ". Today is " + day + ".";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday.
// Use += to append to an existing string.
greeting += " How are you today?";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday. How are you today?
Note
I strängsammanfogning behandlar C# en null sträng på samma sätt som en tom sträng, så sammanfogning null lägger till ingenting i resultatet.
Använda stränginterpolation
Om du vill bädda in beräknade uttryck i en sträng föredrar du stränginterpolering framför positionella platshållare som token {0} och {1} som String.Format ärver från formatering i C-formatering. Interpolation placerar varje uttryck direkt där dess värde ska visas, så att resultatsträngen förblir läsbar och du kan inte råka ange ett argument på fel plats:
string name = "Alex";
string day = "Monday";
// String interpolation reads better than a chain of + operators.
string greeting = $"Hello {name}. Today is {day}.";
Console.WriteLine(greeting);
// => Hello Alex. Today is Monday.
När varje interpolerat uttryck i sig är en konstant sträng kan du tilldela det interpolerade resultatet till en const sträng.
Sammanfoga en samling strängar
Om du vill kombinera elementen i en samling använder String.Concat du för att koppla dem utan avgränsare eller String.Join för att placera en avgränsare mellan varje element:
string[] words = ["The", "quick", "brown", "fox"];
// Concat joins the sequence with no separator.
string runTogether = string.Concat(words);
Console.WriteLine(runTogether);
// => Thequickbrownfox
// Join places a separator between each element.
string sentence = string.Join(' ', words);
Console.WriteLine(sentence);
// => The quick brown fox
string.Join är rätt verktyg när du behöver avgränsade utdata, till exempel kommaavgränsade värden eller blankstegsavgränsade ord.
Skapa en sträng i en loop
Varje + eller += åtgärd skapar en ny sträng, eftersom strängar är oföränderliga. När du lägger till många delar i en loop läggs allokeringen ihop. Klassen StringBuilder skapar resultatet i en enda buffert i stället:
// StringBuilder builds a string in place, which suits loops
// that append many pieces.
var builder = new StringBuilder();
for (int i = 1; i <= 3; i++)
{
builder.AppendLine($"Line {i}");
}
Console.Write(builder.ToString());
// => Line 1
// => Line 2
// => Line 3
Sök efter StringBuilder när antalet bitar är stort eller okänt vid kompileringstillfället. För en fast, liten uppsättning värden är operatorn + och stränginterpolationen tydligare. Vägledning om när varje metod presterar bäst finns i Typerna string ochStringBuilder.