[VB] Bestand hernoemen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • FabiandJ
  • Registratie: Oktober 2001
  • Niet online
Ik ben bezig om met VB een programma te maken die een bestand waar een bepaald woord in voor komt te hernoemen.
Op dit moment ben ik aan het testen op een variabele die ik een stuk tekst mee heb gegeven.
Wat ik op dit moment heb aan code is het volgende en hij voert het uit zodra ik op een knop klik:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
Private Sub bTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Test.Click
    Dim invoer As String
    Dim uitvoer As Array
    invoer = "dit.is.een.test.doc"
    If invoer.Contains("test") Then
        uitvoer = Split(invoer, ".") 'de file splitten op de punten
        'alle woorden behalve test pakken
        'deze achter elkaar zetten en in een variable zetten
        'de variable renamen met File.Move
    End If
End Sub


Ik heb wat de code nog moet doen in tekst er bij gezet, maar ik weet niet hoe ik de volgende stap moet doen.
Ik heb nu dus het bestand dit.is.een.test.doc gesplitst op de punten in het bestand en deze zet die in een array.
Hoe kan ik nou weer alle woorden uit de Array halen behalve het woord test, en deze dan door middel van Join aan elkaar knopen?
De uit eindelijke bestandsnaam moet er zo uitkomen te zien: dit.is.een.doc
Maar het kan ook zijn dat het bestand wat hernoemd moet worden er zo uitziet: deze.test.is.nutteloos.doc
Dus de plek waar het woord test staat hoeft niet altijd hetzelfde te zijn.

Iemand die mij tips kan geven hoe ik dit kan oplossen? Of misschien is er wel een veel makkelijkere manier?

[ Voor 1% gewijzigd door RobIII op 27-01-2011 14:48 . Reden: Syntax highlighting FTW \O/ ]


Acties:
  • 0 Henk 'm!

  • Ssander
  • Registratie: December 2009
  • Laatst online: 12-06-2023
Waarom niet gewoon met een for(each) loop over die uitvoer variabele iterereren, en alle elementen die niet gelijk zijn aan 'test' waar achter elkaar plakken?

foreach loop: http://msdn.microsoft.com/en-us/library/5ebk1751.aspx

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waarom niet gewoon een string replace?
Visual Basic .NET:
1
uitvoer = invoer.Replace("test", "")

Moet je alleen nog even dubbele punten replacen of wat andere edgecases afhandelen.

[ Voor 6% gewijzigd door RobIII op 27-01-2011 14:22 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • FabiandJ
  • Registratie: Oktober 2001
  • Niet online
RobIII schreef op donderdag 27 januari 2011 @ 14:21:
Waarom niet gewoon een string replace?
Visual Basic .NET:
1
uitvoer = invoer.Replace("test", "")

Moet je alleen nog even dubbele punten replacen of wat andere edgecases afhandelen.
Het was schijnbaar makkelijker dan ik dacht :)
Waarschijnlijk zat ik gewoon veel te moeilijk te denken en kende ik de Replace functie niet.

Oh en dubbele punten zullen niet in de bestandsnaam staan dus die hoef ik niet op te vangen.

code:
1
2
3
4
5
6
7
8
9
10
Private Sub bTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Test.Click
Dim invoer As String
Dim uitvoer As String
invoer = "D:\dit.is.een.test.doc"
    If invoer.Contains("test") Then
        uitvoer = invoer.Replace("test.", "")
        File.Move(invoer, "D:\" + uitvoer)
        MessageBox.Show("Hernoemen en kopiëren is gelukt")
    End If
End Sub

De variabele heeft nu dit.is.een.doc precies zoals ik het wilde :)

Alleen het hernoemen gaat niet goed ik krijg de foutmelding: De opgegeven padindeling wordt niet ondersteund.
Volgens mij zie ik iets over het hoofd, maar ik weet niet wat.

[ Voor 18% gewijzigd door FabiandJ op 27-01-2011 14:54 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dutch3men schreef op donderdag 27 januari 2011 @ 14:33:
Alleen het hernoemen gaat niet goed ik krijg de foutmelding: De opgegeven padindeling wordt niet ondersteund.
Volgens mij zie ik iets over het hoofd, maar ik weet niet wat.
Begin eens met simpelweg te debuggen: Debuggen: Hoe doe ik dat?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • FabiandJ
  • Registratie: Oktober 2001
  • Niet online
Ik heb het al ipv zo:
code:
1
File.Move(invoer, "D:\" + uitvoer)

Moet het dit zijn:
code:
1
File.Move(invoer, "D:\" + Filepath.GetName(uitvoer))

Acties:
  • 0 Henk 'm!

  • ZaZ
  • Registratie: Oktober 2002
  • Laatst online: 19-08 14:24

ZaZ

Tweakers abonnee

Hoewel niet meer nodig toch even een vraag beantwoorden;
volgens mij kent VB ook een functie die Filter heet.
Die filtert een element uit een array of laat juist alleen de filter over a.d.v een bool parameter.
Dan daarna had je een Join kunnen doen en hoef je niet meer zorgen te maken of het het eerste of laatste woord is of dat ie in het midden staat

Lekker op de bank

Pagina: 1