Avatar billede nbnielsen Nybegynder
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?
Avatar billede nbnielsen Nybegynder
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.
Avatar billede kedde65 Praktikant
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
Avatar billede nbnielsen Nybegynder
08. december 2005 - 09:11 #3
Sendt.
Avatar billede medions Nybegynder
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
Avatar billede nbnielsen Nybegynder
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.
Avatar billede kedde65 Praktikant
08. december 2005 - 09:26 #6
Jeg har ikke modtaget filen...

/Christian
Avatar billede medions Nybegynder
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
Avatar billede nbnielsen Nybegynder
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.
Avatar billede nbnielsen Nybegynder
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?
Avatar billede medions Nybegynder
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
Avatar billede nbnielsen Nybegynder
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
Avatar billede medions Nybegynder
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
Avatar billede medions Nybegynder
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
Avatar billede nbnielsen Nybegynder
08. december 2005 - 10:45 #14
Det skal kun erstatte 2 med 1 i kolonne nummer to, og KUN i kolonne nummer to :o)
Avatar billede medions Nybegynder
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
Avatar billede nbnielsen Nybegynder
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?
Avatar billede medions Nybegynder
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
Avatar billede medions Nybegynder
12. december 2005 - 09:24 #18
Har du fundet ud af det?

//>Rune
Avatar billede nbnielsen Nybegynder
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.
Avatar billede medions Nybegynder
12. december 2005 - 10:16 #20
Det var godt det kunne bruges.

//>Rune
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
Kurser inden for grundlæggende programmering

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