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
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.