editace string   zodpovězená otázka

VB.NET, WinForms

Zdravím udělal jsme si malý prográmek:

Imports System.IO

Public Class Form1

    Private openFileName As String, folderName As String

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim result As DialogResult = OpenFileDialog1.ShowDialog()

        If (result = DialogResult.OK) Then
            openFileName = OpenFileDialog1.FileName
        End If

        TextBox1.Text = openFileName    ' Vypsani originalni cesty

        'editace cesty
        Dim UpravenaCesta As String
        UpravenaCesta = "Cesta/na/webserveru/" + Path.GetFileName(openFileName)

        TextBox2.Text = UpravenaCesta




    End Sub
End Class

ale tahle varianta je dost konkretni chtel bych ji zobcenit tím, že by se cesta k souboru umazala o c:/documents/uzivatel/obrazky/projekt a zůstlao mi neco jako "~"+"pics/jmenosouboru.jpg"

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nejprve doporučuji si přečíst:

http://www.vbnet.cz/blog-clanek--160-net...

Tam se dočtete jak správně spojovat cesty (funkcí Path.Combine).

Pokud chcete cestu odkazovat relativně, napište si funkci, která vrátí spojenou cestu právě se základem například c:/documents/uzivatel/obrazky/projekt.

Pokud chcete získat adresář spuštěné aplikace, pak využijte Application.StartupPath.

http://msdn.microsoft.com/en-us/library/...

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To spojování bylo jenom na ukázku,

jde mi spíš o editaci stringu obecně. Tak aby mi cyklus string (v tomhle případě cestu k souboru) četl od konce a zastavil se na nějakém konkrétním znaku (v tomhle případě druhé lomítko od konce) a vše co bude před znakem aby umazal. nebo co je za znakem nakopíroval do nové proměnné.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Buď můžete čachrovat s funkcí IndexOf, anebo použít regulární výrazy (tady se zrovna docela hodí):

Dim cesta As String = Regex.Match("[^\\]*\\[^\\]*$").Value

Jen na vysvětlení:

- [^\\]* je skupina znaků bez lomítka (název složky nebo souboru, \ se musí zdvojit, protože v regexpech je to spec. znak.

- [^\\]*\\[^\\]* namatchuje řetězec typu "složka\soubor.přípona" nebo "složka\složka"

- dolar na konci znamená, že za tou skupinou musí řetězec už končit, tím pádem to vybere "složka\soubr.přípona"

Nejdřív si asi nahraďte v cestě dopředná lomítka zpětnými, aby to fungovalo. Sice by se tam dostat neměla, ale člověk nikdy neví.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback