Avatar billede marduk666 Nybegynder
20. juli 2004 - 08:06 Der er 3 kommentarer og
1 løsning

RegExp: Fra pattern til replacement

Jeg har en Regexp:

string Blah = System.Text.RegularExpressions.Regex.Replace(string, "{([0-9]+)}", "\\1");

Og det tal den finder i "string" mellem { og } vil jeg også gerne kunne bruge ved replacement, ligesom i php hvor man bruger \\1, \\2 o.s.v.

Håber i forstår.
Avatar billede arne_v Ekspert
20. juli 2004 - 22:50 #1
using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string s = "a{123}b";
        string s2 = Regex.Replace(s, "{([0-9]+)}", Regex.Matches(s, "{([0-9]+)}")[0].Groups[1].ToString());
        Console.WriteLine(s + " -> " + s2);
    }
}

outputter:

a{123}b -> a123b

Det er Groups[1] som svarer til \\1.
Avatar billede marduk666 Nybegynder
21. juli 2004 - 00:25 #2
Det virker, men det hele bliver det samme, her er et eksempel på en streng:
ab{123}cd{35416}ef{131234}gh{745636}ij
så bliver den til det her:
ab123cd123ef123gh123ij

Dvs. den tager 123 fra første replacement og bruger dem alle steder.
Avatar billede arne_v Ekspert
21. juli 2004 - 01:56 #3
Det fremgik ikke at du have flere matches.

Så skal du bruge:

using System;
using System.Text.RegularExpressions;

class MainClass
{
    public static void Main(string[] args)
    {
        string s = "ab{123}cd{35416}ef{131234}gh{745636}ij";
        string s2 = s;
        MatchCollection res = Regex.Matches(s, "{([0-9]+)}");
        for(int i = 0; i < res.Count; i++)
        {
            s2 = s2.Replace(res[i].Groups[0].ToString(), res[i].Groups[1].ToString());
        }
        Console.WriteLine(s + " -> " + s2);
    }
}
Avatar billede marduk666 Nybegynder
21. juli 2004 - 04:06 #4
Takker for hjælpen :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester