C#:
Slette tegn som matcher et mønster
Hvordan:
La oss se hvordan dette kan gjøres i C#. Her er et lite script som bruker Regex
-klassen til å slette alle tall i en tekststreng.
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "Hei Norge! Det er 17. mai, 2021.";
string pattern = @"\d+"; // Matcher alle tallsekvenser
string output = Regex.Replace(input, pattern, "");
Console.WriteLine(output); // Skriver ut: "Hei Norge! Det er . mai, ."
}
}
Og et eksempel som fjerner tegn som ikke er bokstaver eller mellomrom:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "C# er gøy! :)";
string pattern = @"[^a-zA-Z\s]+"; // Matcher alt som ikke er bokstaver eller mellomrom
string output = Regex.Replace(input, pattern, "");
Console.WriteLine(output); // Skriver ut: "C# er gøy "
}
}
Deep Dive
Regex, eller regulære uttrykk, har vært brukt i mange år for tekstmanipulering; de er kraftige og fleksible. I C# finnes de i System.Text.RegularExpressions
-navneområdet.
Alternativer til Regex
kan være string
-metoder som Replace
, Remove
eller IndexOf
. Disse er enklere og raskere, men mindre fleksible.
For implementasjoner er det verdt å merke seg at Regex
kan være tregt ved store mengder data eller komplekse mønstre. Kompilering av Regex
(ved å bruke RegexOptions.Compiled
) kan forbedre ytelsen i slike tilfeller.
Se Også
- Microsofts dokumentasjon om Regex i .NET
- Regex101: for å teste regulære uttrykk online
- “Mastering Regular Expressions” av Jeffrey Friedl - En bok om dypere forståelse av regulære uttrykk.
- Stack Overflow: Tips for å forbedre Regex-ytelse i C#