按特定要求取字符串的特定字符串部分
问题描述:
我正在开发函数,它会给我特定字符串的右侧。函数有可能根据splitted char返回字符串,将char保留在字符串中,而且最重要的是要么返回字符串将在该char分隔符的最后一次出现之后或者说在字符串中的分隔符occerence的哪个位置之后,返回字符串后采取。任何人都可以看看,并确认是否正确的方式去或该代码是否包含任何问题?按特定要求取字符串的特定字符串部分
请记住使用lastindex我将lastindexof设置为true,并且当splitterCharPosition必须设置时,splitterCharPosition是什么,反之亦然。
这是我当前的代码,以确认:
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功能,将得到n个指标:根据您的其他问题,删除
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
答
,我制定了这个要求。
它适用于您以前的所有示例。
[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
你究竟在问什么?你是否运行这段代码?它工作吗?如果你要求审查,那么你可以尝试在https://codereview.stackexchange.com/上提出这个问题。 –