2013-10-10 6 views
0

J'ai créé une fonction simple conçu pour supprimer une chaîne de caractères d'une autre chaîne et le remplacer par ce que jamais la chaîne que l'utilisateur souhaite (ou aucune chaîne par défaut)VB.net Fonction retour des résultats incohérents

Private Function RemoveString(scontainer As String, Optional rcontainer As String = "", Optional rstring As String = "") As String 
    Dim container As String = scontainer 
    Dim tcontainer As String 

    If InStr(container, rcontainer) <> 0 Then 
     Do While (InStr(container, rcontainer) <> 0) 
      tcontainer = Microsoft.VisualBasic.Left(container, InStr(container, rcontainer) - 1) 
      tcontainer = tcontainer & rstring & Microsoft.VisualBasic.Right(container, (Len(container) - (InStr(container, rcontainer) + 2))) 
      container = tcontainer 
     Loop 

     RemoveString = container 'return modded string 
    Else 
     RemoveString = scontainer 'return string as is 
    End If 
End Function 

Le problème est: Bien que ce soit supposé être une fonction d'utilisation générale, j'ai vraiment besoin qu'il soit concerné par 2 chaînes différentes

% 20 amp;

la fonction fonctionne parfaitement pour la situation% 20 mais laisse le point-virgule derrière pour l'ampli; chaîne. Des idées pour lesquelles cela pourrait être?

+1

Regardez 'InStr (conteneur , rcontainer) + 2' - pourquoi utilisez-vous 2 ici? –

+0

Alors que je tapais mon explination, j'ai réalisé pourquoi cela ne fonctionne probablement pas. Je vais essayer d'utiliser « + len (rcontainer) » – gNerb

+1

Vous devriez également regarder en utilisant 'String.Replace' ... –

Répondre

1

Est-ce que je vous comprends? Vous souhaitez remplacer une séquence de caractères dans votre chaîne par une autre séquence de caractères ou simplement la supprimer.

Si c'est le cas, vous pouvez utiliser String.Replace (oldValue As String, newValue As String) As String

Dim startString as String = "%20 amp;" 
Dim resultString as String = startString.Replace("%20 ",String.Empty) 
resultString = resultString.Replace(";",String.Empty) 

Après ces lignes ResultString serait "Ampère"

+0

Non ce n'était pas exactement ce que j'essayais d'expliquer mais c'est ma faute. Cela étant dit, votre réponse a fourni une peice d'informations que je ne savais pas qui ne enfait contribuer à la solution (la méthode de String.replace) et parce que la première personne à l'amener ne pas poster une réponse, je m marquant le vôtre comme réponse. – gNerb

Questions connexes