Domanda

Ho una variabile come questa:

var = "word1 (should be replaced by word1)"
.

Ho bisogno di ottenere Word1 da solo ea volte può essere una parola (s) ma avrà sempre (*) dopo di esso.Qualsiasi modo per eliminare il testo tra i segni (), quindi rimuovere il (), quindi rimuovere qualsiasi spazio (s) dopo l'ultima parola?

Non sono sicuro di alcun modo per farlo.

È stato utile?

Soluzione

Il più semplice sarebbe:

var = Trim(Mid(var, 1, InStr(var, "(") - 1))
.

InStr restituisce l'indice della prima occorrenza di "(". Sottotrai 1 per scontare la posizione tenuta dal "(".

Mid taglia la stringa dal primo carattere in posizione 1, all'indice restituito da InStr.

Allora Trim per rimuovere gli spazi di trascinamento.

Altri suggerimenti

Ti piace questo?

Sub Sample()
    Dim sVar As String
    Dim MyAr() As String

    sVar = "word1 (should be replaced by word1)"

    MyAr = Split(sVar, "(")

    Debug.Print MyAr(0)
End Sub
.

Modifica

Il codice sopra può essere accorciato ulteriormente

Sub Sample()
    Dim sVar As String
    sVar = "word1 (should be replaced by word1)"
    Debug.Print Split(sVar, "(")(0)
End Sub
.

Utilizzerei la funzione divisa.

arrayVar2 = split(var, "(" )
.

Avrai ora un array con 2 elementi.

Dividere il secondo elemento

arrayVar3 = split( arrayVar2[1], ")" )
.

Allora partecipare:

out = arrayVar2[0] & arrayVar3[1]
.

che funzionerà finché c'è solo un singolo set di staffe nella stringa.

Il modo alternativo è utilizzare la libreria di espressioni regolari, ma questa è una risposta più lunga.Non sarebbe il più efficace ma sarebbe meglio se avesse bisogno di gestire stringhe più complesse.


.

Aggiornamento: sono andato un po 'oltre la domanda forse richiesti.La mia soluzione assicura che il testo bracketed venga rimosso: qualsiasi testo dopo il mantenimento del testo tra parentesi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top