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 :-)
Annonceindlæg tema
10. december 2004 - 15:32
#1
altså så slutresultatet f.eks. er "aaa [c1c1c1] ooo [g1g1g1] vvv"
10. december 2004 - 15:38
#2
prøv: string s = "aaa [ccc] ooo [ggg] vvv"; string s2 = Regex.Replace(s, "\[ccc\]", "[c1c1c1]");
10. december 2004 - 15:39
#3
string s = "aaa [ccc] ooo [ggg] vvv"; string s2 = Regex.Replace(s, "\\[ccc\\]", "[c1c1c1]");
10. december 2004 - 15:40
#4
strengen varier fra gang til gang, så den skal være meget mere generel...
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 ?
10. december 2004 - 15:41
#6
og antallet er enkapsulerede strenge varierer osse
10. december 2004 - 15:41
#7
og antallet AF enkapsulerede strenge...
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].
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?
10. december 2004 - 15:48
#10
jeps: "\\[[A-Za-z_ ]*\\]" virker
10. december 2004 - 15:49
#11
Hvad betyder egentlig * og \\ ? Hvilken inflydelse har de?
10. december 2004 - 15:50
#12
* = 0..mange tegn \\ betyder at den efterfølgende [ eller ] skal betragtes som et normalt bogstav
10. december 2004 - 15:50
#13
og et svar
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"
10. december 2004 - 15:55
#15
er det muligt at erstatte den første af forekomster og derefter kalde funktionen igen?
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 ?
10. december 2004 - 15:58
#17
Regex.Replace(s, "\\[[A-Za-z_ ]*\\]", "[c1c1c1]", 1) erstatter kun den første som den finder
10. december 2004 - 16:07
#18
cool - tak
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
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
10. december 2004 - 16:16
#21
Jeg fik lige blandet de static og ikke static former sammen.
10. december 2004 - 16:19
#22
nå ok... dvs det kan man ikke så?
10. december 2004 - 16:21
#23
Jo - du skal bare gøre som i 16:16:16 kommentarer
10. december 2004 - 16:24
#24
hov - den så jeg ik
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.