VB [Help] Catturare solo una parte di testo

Stato
Discussione chiusa ad ulteriori risposte.

KDI

Utente Bronze
15 Luglio 2012
10
3
0
49
Ultima modifica:
Salve, avevo un problema : Voglio prendere solo una parte di un file txt.. Mi spiego meglio, se io ho un file di configurazione config.txt con scritto :

[Lingua]Italiano[/Lingua]
[Versione]1.0[/Versione]
[Msgbox1]Visita il sito www.blablabla.org[/Msgbox1]

Io voglio ottenere come stringa in questo caso "Italiano" "1.0" "Visita il sito www.blablabla.org"
Come posso fare?Un metodo veloce per far capire al programma che deve prendere tutto ciò che sta tra le quadre.
Grazie in anticipo.
 
Ultima modifica:
Salve, avevo un problema : Voglio prendere solo una parte di un file txt.. Mi spiego meglio, se io ho un file di configurazione config.txt con scritto :

[Lingua]Italiano[/Lingua]
[Versione]1.0[/Versione]
[Msgbox1]Visita il sito www.blablabla.org[/Msgbox1]

Io voglio ottenere come stringa in questo caso "Italiano" "1.0" "Visita il sito www.blablabla.org"
Come posso fare?Un metodo veloce per far capire al programma che deve prendere tutto ciò che sta tra le quadre.
Grazie in anticipo.

Leggi il file con il modo che ti pare, nell'esempio userò StreamReader e poi:
Codice:
Dim freader as new io.file.streamreader("C:\percorsofile")
Dim lines() as string = split(freader.readtoend, vbCrLf)
freader.Close
a quel punto lines sarà
lines(0) = Italiano
lines(1) = 1.0
lines(2) = Visita il ....
Ti sconsiglio il metodo tra parentesi, al massimo ini
esempio:
Codice:
Lang=Italiano
Version=1.0
Msgbox1=Visita il...

basta ciclare lines e fare split al char = se presente.
Ma se devi fare solo questo e lo schema è costante allora nel file di testo puoi scrivere direttamente:
Codice:
Italiano
1.0
Visita il...
così puoi usare lines così com'è.

Se proprio vuoi usare il metodo con le parentesi quadre usa IndexOf e substring, esempio Dim posofprimochar as integer = lines(x).IndexOf("]") + 1
fai substring e leggi fino all'indexof della seconda "[".
 
Ultima modifica:
Scusate il ritardo nella mia risposta. Ti ringrazio per l'intervento. Ora mi trovo in questa situazione ( in un altro argomento, senza più quadre ecc ) in cui ho una stringa di oltre 600 caratteri in una richtextbox1, trovo gli index che mi interessano che sono 344 e 375 , quando vado a fare :
Codice:
MsgBox(str.Substring(344, 375))

E mi da il seguente errore (chiaramente al punto del codice postato 1 riga fa) :


* str = tutta la stringa d 600 caratteri , i 2 numeri sono gli index trovati
d990a65b05ce492597ad864.png





EDIT------------


Tra l'altro ho scoperto che fino a : str.Substring(265, 375) funziona, se è già :
str.Substring(266, 375)
da quell'errore... Scusate ma non capisco proprio !


EDIT-----------2


Se diminuisco il 375 a 374, anche con 266 funziona, ma cosa è ? C'è un limite ?

Come risolvo?
Grazie..
 
Facendo questo funziona... Ma mi potete spiegare perché?

Perchè il primo primo parametro indica la posizione di partenza e fin qui tutto ok
Ma il secondo parametro indica quanti caratteri selezionare della posizione scelta, non come pensi tu la posizione di fine

.Substring(3,5)

ciao come stai - SI

ciao come stai - NO
 
Chiaro... Non avevo capito io, grazie mille per il chiarimento, si può chiudere..
Perchè il primo primo parametro indica la posizione di partenza e fin qui tutto ok
Ma il secondo parametro indica quanti caratteri selezionare della posizione scelta, non come pensi tu la posizione di fine

.Substring(3,5)

ciao come stai - SI

ciao come stai - NO
 
Stato
Discussione chiusa ad ulteriori risposte.