Avatar billede beef12 Nybegynder
10. december 2004 - 15:31 Der er 23 kommentarer og
1 løsning

erstatte strenge

Jeg har en streng, fx

"aaa [ccc] ooo [ggg] vvv"

Jeg vil gerne have alt tekst imellem []-paranteserne og erstatte det med en ny text.

Er det nemmest at anvende reg.exp?
Skal jeg putte alle forekomster ind i et array eller lave en rekursiv funktion.

Et eksempel ville være behjælpeligt :-)
Avatar billede beef12 Nybegynder
10. december 2004 - 15:32 #1
altså så slutresultatet f.eks. er "aaa [c1c1c1] ooo [g1g1g1] vvv"
Avatar billede arne_v Ekspert
10. december 2004 - 15:38 #2
prøv:

string s = "aaa [ccc] ooo [ggg] vvv";
string s2 = Regex.Replace(s, "\[ccc\]", "[c1c1c1]");
Avatar billede arne_v Ekspert
10. december 2004 - 15:39 #3
string s = "aaa [ccc] ooo [ggg] vvv";
string s2 = Regex.Replace(s, "\\[ccc\\]", "[c1c1c1]");
Avatar billede beef12 Nybegynder
10. december 2004 - 15:40 #4
strengen varier fra gang til gang, så den skal være meget mere generel...
Avatar billede arne_v Ekspert
10. december 2004 - 15:41 #5
Øh - det kunne man jo da vist lige så godt lave med en normal Replace:

string s = "aaa [ccc] ooo [ggg] vvv";
string s2 = s.Replace("ccc", "[c1c1c1]");

kender du ikke ccc siden du vil bruge reg exp ?
Avatar billede beef12 Nybegynder
10. december 2004 - 15:41 #6
og antallet er enkapsulerede strenge varierer osse
Avatar billede beef12 Nybegynder
10. december 2004 - 15:41 #7
og antallet AF enkapsulerede strenge...
Avatar billede arne_v Ekspert
10. december 2004 - 15:42 #8
string s = "aaa [ccc] ooo [ggg] vvv";
string s2 = Regex.Replace(s, "\\[[A-Za-z]*\\]", "[c1c1c1]");

giver

aaa [c1c1c1] ooo [c1c1c1] vvv

d.v.s. at den erstatter [ efterfulgt af bogstaver efterfulhgt af ] med
[c1c1c1].
Avatar billede beef12 Nybegynder
10. december 2004 - 15:46 #9
okay - det ligner noget... men det virkede ikke. Er det mon fordi streng i mellem paranteserne har underscore og mellemrum i?
Avatar billede beef12 Nybegynder
10. december 2004 - 15:48 #10
jeps: "\\[[A-Za-z_ ]*\\]" virker
Avatar billede beef12 Nybegynder
10. december 2004 - 15:49 #11
Hvad betyder egentlig * og \\ ?
Hvilken inflydelse har de?
Avatar billede arne_v Ekspert
10. december 2004 - 15:50 #12
* = 0..mange tegn
\\ betyder at den efterfølgende [ eller ] skal betragtes som et normalt bogstav
Avatar billede arne_v Ekspert
10. december 2004 - 15:50 #13
og et svar
Avatar billede beef12 Nybegynder
10. december 2004 - 15:54 #14
men Arne - jeg kan nu kun erstatte mine [] enkapsulerede strenge med en ny streng og ikke f.eks. er "aaa [c1c1c1] ooo [g1g1g1] vvv"
Avatar billede beef12 Nybegynder
10. december 2004 - 15:55 #15
er det muligt at erstatte den første af forekomster og derefter kalde funktionen igen?
Avatar billede arne_v Ekspert
10. december 2004 - 15:56 #16
Hvordan skal ccc->c1c1c1 og ggg->g1g1g1 være ?

Vil du som i dette eksempel sætte 1 ind efter hvert bogstav ?
Avatar billede arne_v Ekspert
10. december 2004 - 15:58 #17
Regex.Replace(s, "\\[[A-Za-z_ ]*\\]", "[c1c1c1]", 1)

erstatter kun den første som den finder
Avatar billede beef12 Nybegynder
10. december 2004 - 16:07 #18
cool - tak
Avatar billede beef12 Nybegynder
10. december 2004 - 16:09 #19
øv... jeg får denne fejl når jeg tilføjer 1-tallet:

The best overloaded method match for 'System.Text.RegularExpressions.Regex.Replace(string, string, string, System.Text.RegularExpressions.RegexOptions)' has some invalid arguments
Avatar billede arne_v Ekspert
10. december 2004 - 16:16 #20
Regex r = new Regex("\\[[A-Za-z_ ]*\\]");
string s = "aaa [ccc] ooo [ggg] vvv";
string s2 = r.Replace(s, "[c1c1c1]", 1);

virker
Avatar billede arne_v Ekspert
10. december 2004 - 16:16 #21
Jeg fik lige blandet de static og ikke static former sammen.
Avatar billede beef12 Nybegynder
10. december 2004 - 16:19 #22
nå ok... dvs det kan man ikke så?
Avatar billede arne_v Ekspert
10. december 2004 - 16:21 #23
Jo - du skal bare gøre som i 16:16:16 kommentarer
Avatar billede beef12 Nybegynder
10. december 2004 - 16:24 #24
hov - den så jeg ik
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