0

我只想问:我有一个 label40.text 内容为 {a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q, r,s,t,u,v,w,x,y,z} 和我也有一个 label39.text 每次发生某些变化时都会改变它的输出。

我的问题是如何通过代码嵌入这个模拟?

如果 Label39.text = "a" 那么 label40.text "a" 的内容将被删除,字母列表将按字母顺序保留。

我希望这也发生在我的 label39.text 将其值“随机”更改的任何时候

例如如果 label39.text = "a,b,c,d,x,z" 那么 label40.text = "e,f,g,h,i,j,k,l,m,n,o,p,q ,r,s,t,u,v,w,x,y"

这是我到目前为止的代码

Dim patterns As String
        patterns = Label39.Text
        Dim tobefollow As String
        tobefollow = Label40.Text
        Dim matches As MatchCollection = Regex.Matches(patterns, tobefollow)
        If Regex.IsMatch(patterns, tobefollow) Then
               'this where i will put my code to make my example 
        End If
4

2 回答 2

1

首先,请注意您错误地填充了patternsandtobefollow变量(您在另一个问题中做对了);它应该是:

patterns = Label40.Text
tobefollow = Label39.Text

还要记住,您想要的东西可以很容易地完成,而无需依赖Regex; 例如通过:

If (Label40.Text.ToLower().Contains(Label39.Text.ToLower())) Then
       'this where i will put my code to make my example 
End If

关于这次你想要什么,你可以依靠.Replace.Replace("text to be deleted", "")将删除这封信;但您还必须考虑逗号。要放在条件内的代码:

Dim origString As String = Label40.Text
Label40.Text = Label40.Text.ToLower().Replace(Label39.Text.ToLower() & ",", "")
If (origString = Label40.Text) Then
    'It means that it does not have any comma, that is, refers to the last letter
    Label40.Text = Label40.Text.ToLower().Replace("," & Label39.Text.ToLower(), "")
End If
于 2013-07-21T16:15:57.463 回答
0

另一种答案是使用String.SplitString.Join方法将您的字符串分解为单个字符,然后将它们从列表中删除并将它们重新组合在一起。这是一个执行此操作的函数:

Private Function RemoveLetters(str1 As String, str2 As String) As String
    Dim sep() As String = {","}
    Dim list1 As List(Of String) = str1.Split(sep, StringSplitOptions.None).ToList
    Dim list2 As List(Of String) = str2.Split(sep, StringSplitOptions.None).ToList

    For Each s As String In list2
        list1.Remove(s)
    Next
    Return String.Join(",", list1)
End Function

你会像这样使用它:

Label40.Text = RemoveLetters(Label40.Text, Label39.Text)
于 2013-07-21T16:42:18.477 回答