2014-10-16 102 views
-1

我試圖刪除兩個字符串之間的通用字符。我的問題是,每個循環都不會刪除strnamestrname2之間的正確字符。刪除兩個字符串之間的通用字符

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button3.Click 
Dim strname, strname2 As String 
Dim r As Double 
strname = TextBox1.Text 
strname2 = TextBox2.Text 
For Each c As Char In strname 
    If (strname2.IndexOf(c) > -1) Then 
     strname2 = strname2.Remove(strname2.IndexOf(c), 1) 
     strname = strname.Remove(strname.IndexOf(c), 1) 
    End If 
Next 
Dim result As Double = strname.Length + strname2.Length 
Label6.Text = result 
+0

當您從字符串中刪除字符時,是否要刪除所有出現的字符或只是第一次出現?如果你的書寫方式有效,它只會刪除第一次出現。 – 2014-10-16 13:03:22

+0

是的,這正是我的問題,你可以幫我,我只是想通了,當我輸入一個特定的字符串 例如:字符串1 =爸爸字符串2 = amm代碼將刪除什麼都沒有,因爲string1的a是在索引1,而字符串2的a是索引0 – anitstudent 2014-10-16 13:11:20

+0

是的,良好的捕獲。這肯定會成爲一個問題。如果你想刪除所有的事件,我會建議使用'Replace()'用空字符串替換字符。 – 2014-10-16 13:15:41

回答

0

如果我正確理解您的要求,您需要做的是找到string1中存在於string2中的每個字符。對於您找到的每個人物,從兩個字符串中刪除它的所有事件。

一種選擇是迭代第一個字符串中的每個字符,檢查它們是否包含在第二個字符串中。這是相當低效率的,因爲它會更改原始字符串的每個字符而不是字符串。因此,如果第一個字符串本身包含重複字符,它將迭代它們,但在第一次傳遞後不做任何事情。

Dim string1 As String = "horse" 
Dim string2 As String = "donkey" 

For Each c As Char In string1 
    If string2.Contains(c) Then 
     string1 = string1.Replace(c.ToString(), "") 
     string2 = string2.Replace(c.ToString(), "") 
    End If 
Next 

另一種選擇是使用LINQ來查找這兩個字符串的intersection。這將爲您提供兩個字符串之間常見字符的清晰列表。

Dim string1 As String = "horse" 
Dim string2 As String = "donkey" 

Dim ar() As Char = string1.Intersect(string2).ToArray() 

For Each c As Char In ar 
    string1 = string1.Replace(c.ToString(), "") 
    string2 = string2.Replace(c.ToString(), "") 
Next 

編輯:如果您有包含大寫和小寫字母串,則需要手動處理,由於Replace()沒有。

您可以通過幾種不同的方式查看this answer以擴展Replace()的功能。或者,如果您不太擔心性能,只需使用ToUpper()ToLower()即可。

For Each c As Char In string1 
    If string2.Contains(c.ToString().ToLower()) Or string2.Contains(c.ToString().ToUpper()) Then 
     string1 = string1.Replace(c.ToString().ToLower(), "") 
     string2 = string2.Replace(c.ToString().ToLower(), "") 

     string1 = string1.Replace(c.ToString().ToUpper(), "") 
     string2 = string2.Replace(c.ToString().ToUpper(), "") 
    End If 
Next 
+0

非常感謝你現在的工作感謝您的親愛的時間 – anitstudent 2014-10-16 14:14:13

+0

不客氣。很高興我能幫上忙。 – 2014-10-16 14:15:41

+0

只是在你讀了這個可以幫助我多一次,如果我輸入大寫字母和該大寫字母常見的字母小寫它不會取消它我嘗試使用此代碼將該字母小寫,但小寫它看起來不像它工作如果strname.IndexOf(0).ToString.ToUpper然後 TextBox1.Text.ToLower() End If If strname2.IndexOf(0).ToString.ToUpper Then textbox2.text。 ToLower() End If – anitstudent 2014-10-16 16:51:14

相關問題