2017-05-29 2 views
-1

Ich entwickle Funktion, die mir die richtige Seite der spezifischen Zeichenfolge geben würde. Funktion hat die Möglichkeit, den Rückgabe-String basierend auf geteiltes Zeichen zu nehmen, Zeichen in String zu behalten und auch, dass entweder Rückgabe-String nach dem letzten Auftreten dieses Zeichen-Trennzeichens ist oder nach genau der Position des Trennzeichens in String zurückgegeben wird Schnur nach zu nehmen. Kann jemand einen Blick darauf werfen und bestätigen, ist es der richtige Weg zu gehen oder ob dieser Code irgendwelche Probleme enthält?Nehmen Sie bestimmte Zeichenfolge Teil der Zeichenfolge von bestimmten Anforderungen

Denken Sie daran, als lastindex zu verwenden, ich leastindexof auf wahr und egal was splitterCharPosition ist und umgekehrt, wenn falsche SplitterCharPosition gesetzt werden muss.

Dies ist mein aktueller Code bestätigt werden:

Public Function GetRightSideStringByCHar(splitterChar As String, searchingWord As String, keepCharAsWell As Boolean, lastindexof As Boolean, splitterCharPosition As Integer) As String 
     Dim index As Integer 
     Select Case lastindexof 
      Case False 
       index = GetNthIndex(searchingWord, splitterChar, splitterCharPosition) 
      Case True 
       index = searchingWord.LastIndexOf(splitterChar) 
     End Select 

     If index > 0 Then 
      If keepCharAsWell Then 
       searchingWord = searchingWord.Substring(0, index + splitterChar.Length) 
      Else 
       searchingWord = searchingWord.Substring(0, index) 
      End If 
     Else 
      searchingWord = String.Empty 
     End If 
     Return searchingWord 
    End Function 

Helper Funktion n-Index zu erhalten:

Public Function GetNthIndex(searchingWord As String, charseparator As Char, n As Integer) As Integer 
     Dim count As Integer = 0 
     For i As Integer = 0 To searchingWord.Length - 1 
      If searchingWord(i) = charseparator Then 
       count += 1 
       If count = n Then 
        Return i 
       End If 
      End If 
     Next 
     Return -1 
    End Function 
+0

Und was genau ist Ihr Problem hier? Hast du diesen Code ausgeführt? Funktioniert es ? Wenn Sie nach einer Überprüfung fragen, können Sie versuchen, diese Frage auf https://codereview.stackexchange.com/ –

Antwort

0

auf der anderen gelöscht Frage Basierend, ich formulierte dies für Sie.

Es funktionierte mit all Ihren vorherigen Beispielen.

[parameters] 
str = input string 
strtofind = separator string 
occurance = zero-based index to start cutting (optional) 
keepstringtofind = append separator to string (optional) 
righttoleft = operational direction (optional) 

    Public Function CutFromString(str As String, strtofind As String, Optional occurance As Integer = 0, Optional keepstrtofind As Boolean = False, Optional righttoleft As Boolean = False) As String 
    Dim s As String = str 
    Dim sections As List(Of String) = IIf(String.IsNullOrEmpty(str), New List(Of String), str.Split(strtofind.ToCharArray).ToList) 
    If sections.Count = 1 AndAlso sections.First = str Then sections.Clear() 
    If occurance < sections.Count Then 
     Dim b = sections.Count - occurance 
     While b > 0 
      If righttoleft Then 
       sections.RemoveAt(0) 
      Else 
       sections.RemoveAt(sections.Count - 1) 
      End If 
      b -= 1 
     End While 
     s = Join(sections.ToArray, strtofind) 
     If keepstrtofind And occurance > 0 Then 
      If righttoleft Then 
       s = strtofind + s 
      Else 
       s += strtofind 
      End If 
     End If 
    End If 
    Return s 
End Function 
+0

zu stellen, scheint nicht in allen Fällen zu funktionieren. Für dieses Beispiel: Console.WriteLine (CutFromString ("1 34.1t0 # $ 1.trweL24w222", ".", 1, True, True)) immer noch nicht am Anfang markiert, um dieses Beispiel beizubehalten oder dieses Beispiel: CutFromString ("14.1001.2 ",". ", 1, True, True) sollte lauten: 14.1001. Ich bekomme: 2 – DinoDinn

+0

Ein paar Fehler behoben, versuchen Sie diese Version – Mike

Verwandte Themen