08. december 2005 - 09:03
Der er
14 kommentarer og 6 løsninger
Script til at omdøbe 2 til 1 i en stor txt fil.
Jeg har en kæmpe txt fil der lister en masse telefon numre. Hvor telefon numreret står i den første kolonne og et customer nummer står i kolonne to. 'kolonnerne' er delt med mellemrum, men nogle af telefon numrene er længere end de andre, så jeg kan ikke bare tælle mellemrums tegn. Listen starter også med 4 mellemrum før telefon nummeret starter. indholdet ser nogenlunde sådan ud: "|" viser rammen i notepad ;) | 2012 100 A A M M M 0.00 | 4512 200 A A M M M 0.00 | 95412 100 A A M M M 0.00 | 96417 200 A A M M M 0.00 Er det muligt at rette alle 2'tallerne i kolonne to til 1'taller? Og hvordan skal jeg gribe den an? Kan i pege mig i den rigtige retning?
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.
08. december 2005 - 09:05
#1
Det ekstra mellemrum der er efter 5 cifrede numre skal ikke være der... min fejl.. kunde numrene står under hinanden, lidt ligesom en tabel oversigt i excel, hvis i forstår.
08. december 2005 - 09:08
#2
Hvis du prøver at sende filen på ck@officekonsulenterne.dk så skal je prøve at kigge på det :-) /Christian
08. december 2005 - 09:11
#3
Sendt.
08. december 2005 - 09:19
#4
Du kan gøre fx. sådan her: strString = " 2012 100 A A M M M 0.00" arrTxt = Split(strString, " ") intLength = Len(arrTxt(1)) -1 strNewSting = Left(arrTxt(1), intLength) MsgBox(strNewSting) //>Rune
08. december 2005 - 09:25
#5
hehe Rune, det kan være du ikke er helt med på ideen. det er 2'tallerne i kolonne 2 der skal ændres til 1'taller. det dine 5 linier gør er blot at take de første 3 tal i kolonne 1 og fjerne det sidste 2'tal.
08. december 2005 - 09:26
#6
Jeg har ikke modtaget filen... /Christian
08. december 2005 - 09:27
#7
Agh agh, jeg glemte vel bare at skrive det sidste tal bagved... strString = " 2012 100 A A M M M 0.00" arrTxt = Split(strString, " ") intLength = Len(arrTxt(1)) -1 strNewSting = Left(arrTxt(1), intLength) strNewString = strNewString & "1" MsgBox(strNewSting) //>Rune
08. december 2005 - 09:33
#8
:Rune Ja, nu ligner det noget (efter lidt insættelse af nogle 'r' :P) :Christian, jeg prøver lige igen.
08. december 2005 - 09:38
#9
Men Rune... er det ik meningen at scriptet skal printe hele strengen ud på skærmen, hvor kolonne to har ændret sig, hvis der stod 200?
08. december 2005 - 10:04
#10
nej, men et kan vi da bare gøre: strString = " 2012 100 A A M M M 0.00" arrTxt = Split(strString, " ") intLength = Len(arrTxt(1)) -1 strNewString = Left(arrTxt(1), intLength) strNewString = " " & strNewString & "1" strRestString = Right(strString, Len(strString)-(intLength+1)-4) strFinialString = strNewString & strRestString MsgBox(strFinialString) //>Rune
08. december 2005 - 10:16
#11
Hvis jeg sætter strString = " 2012 200 A A M M M 0.00" altså 200 i kolonne 2, så bliver strFinalString statig: " 2012 200 A A M M M 0.00" hvor 200 skulle have været 100
08. december 2005 - 10:27
#12
Jamen vil du da bare ha' alle 2 tallerne bliver til 1 taller?? Så gør du jo bare sådan her: strString = " 2012 100 A A M M M 0.00" strFinialString = Replace(strString, "2","1") MsgBox(strFinialString) //>Rune
08. december 2005 - 10:30
#13
Eller er det sådan her du mener: strString = " 2012 200 A A M M M 0.00" arrTxt = Split(strString, " ") intLength = Len(arrTxt(1)) -1 strNewString = Left(arrTxt(1), intLength) strNewString = " " & strNewString & "1" strRestString = Replace(Right(strString, Len(strString)-(intLength+1)-4), "2", "1") strFinialString = strNewString & strRestString MsgBox(strFinialString) //>Rune
08. december 2005 - 10:45
#14
Det skal kun erstatte 2 med 1 i kolonne nummer to, og KUN i kolonne nummer to :o)
08. december 2005 - 10:53
#15
Jamen så gør vi sådan her :-) strString = " 2012 200 A A M M M 0.00" arrTxt = Split(strString, " ") intLength = Len(arrTxt(1)) strNewString = Left(arrTxt(1), intLength) strNewString = " " & strNewString strRestString = Replace(Right(strString, Len(strString)-(intLength+1)-4), "2", "1") strFinialString = strNewString & strRestString MsgBox(strFinialString) //>Rune
08. december 2005 - 13:00
#16
Hvis jeg nu vil have den til at gøre det ved alle linier i en txt fil, hvad ville så være nemmest?
08. december 2005 - 14:02
#17
Løbe hver linje igennem i en løkke og brug min kode i en funktion som en converter... fx.: Function Converter(strString) arrTxt = Split(strString, " ") intLength = Len(arrTxt(1)) strNewString = Left(arrTxt(1), intLength) strNewString = " " & strNewString strRestString = Replace(Right(strString, Len(strString)-(intLength+1)-4), "2", "1") strFinialString = strNewString & strRestString Converter = strFinialString End Function og så siger du jo bare: Converter(Linje_fra_tekstfil) //>Rune
12. december 2005 - 09:24
#18
Har du fundet ud af det? //>Rune
12. december 2005 - 09:44
#19
Ja. Din converter var en god løsning. Den blev brug i en lille del af det endelige script.
12. december 2005 - 10:16
#20
Det var godt det kunne bruges. //>Rune
Kurser inden for grundlæggende programmering