2010-01-07 9 views
1

À partir d'une position arbitraire dans une chaîne, j'ai besoin de trouver la position la plus proche d'un caractère à gauche de ma position. Si je voulais effectuer cette opération vers la droite, je pourrais juste utiliser .IndexOf, mais comment le faire à gauche, je ne suis pas sûr.Position du caractère à gauche de la position actuelle dans la chaîne

Les deux façons, je suis venu avec une boucle était juste de décrémentation à partir de ma position ou de mettre la chaîne en sens inverse et en utilisant un .IndexOf

normale Quelqu'un d'autre a de meilleures façons de acheiving cela?

Répondre

7

Qu'en est-:

yourstring.LastIndexOf("foo", 0, currentPosition)         
+1

Hows Eh bien à ce sujet, de loin une solution plus facile que je travaillais vers. – CMN

0

Plus explicitement, trouver mot survenus avant nword dans txt: Votre mot sera à la position s:

Dim s As Integer = txt.Substring(0, txt.IndexOf(nWord)).LastIndexOf(word) 

Cela a été utile pour moi dans une boucle où j'avais besoin de trouver toutes les occurrences.

Voici comment construire la boucle:

Dim n As Integer = 0 
Dim s As Integer = 0 
Do While txt.Contains(word) AndAlso txt.Contains(nWord) 
    n = txt.IndexOf(nWord) 
    'n = txt.IndexOf(nWord)+nWord.Length ':If nWord may also contain word 
    s += txt.Substring(0, n).LastIndexOf(word) 
    txt = txt.SubString(n + nWord.Length) 
    MsgBox("Found at " & s.ToString()) 
Loop 
Questions connexes