Vb.net 在Visual Basic中仅用其他文本替换字符串一次?

Vb.net 在Visual Basic中仅用其他文本替换字符串一次?,vb.net,Vb.net,我的程序中的某个函数有问题。我试图删除文本框中字符串的单个实例,而不是文本框中字符串的所有实例 下面是我要在其中执行此功能的按钮的代码: If codon.Text.Contains(U.Text + "-") Then codon.Text = codon.Text.Replace(U.Text + "-", "") End If 因此,这段代码将codon.text中的字符串替换为零,换句话说,它将删除它 当我单击光标悬停的按钮时,它会删除UUG的每个实例

我的程序中的某个函数有问题。我试图删除文本框中字符串的单个实例,而不是文本框中字符串的所有实例

下面是我要在其中执行此功能的按钮的代码:

    If codon.Text.Contains(U.Text + "-") Then
        codon.Text = codon.Text.Replace(U.Text + "-", "")
    End If
因此,这段代码将codon.text中的字符串替换为零,换句话说,它将删除它

当我单击光标悬停的按钮时,它会删除UUG的每个实例。我想看看是否有办法只删除UUG的一个实例。

在控制字符串的哪个部分或多少部分可以替换为另一个方面没有提供太多的功能。它将替换遇到的所有指定子字符串或字符(取决于使用的方法重载)。

[TextBox].Text = [TextBox].Text.Replace("[SubString]", "")
将用空字符串替换找到的所有
“[子字符串]”


您可以使用创建一组元素,这些元素满足给定字符串输入和要匹配的值的条件。

[result group] = Regex.Matches([InputString], [Match Pattern])
MatchCollection
将返回找到的元素集合。
检查
[MatchCollection].Count
值以验证搜索是否有任何有效结果。

每个
匹配
标识其状态(布尔
成功
)、基础
(模式)在
[InputString]
值的
索引位置
及其
长度

例如:删除
输入中出现的第二个字符串
“UUG-”
字符串:

Imports System.Text.RegularExpressions

Dim input As String = "UUG-AAA-UUG-CAC-ACC-GGG-GGG-"
Dim xMatches As MatchCollection = Regex.Matches(input, "UUG" & "-")

Dim output As String = input.Remove(xMatches(1).Index, xMatches(1).Length)
输出的结果

"UUG-AAA-CAC-ACC-GGG-GGG-"
您没有指定要删除的输入字符串中的元素。此方法允许您选择使用其
索引的位置和/或显示顺序的字符串。

无法控制字符串的哪个部分或多少部分可以替换为另一部分。它将替换遇到的所有指定子字符串或字符(取决于使用的方法重载)。

[TextBox].Text = [TextBox].Text.Replace("[SubString]", "")
将用空字符串替换找到的所有
“[子字符串]”


您可以使用创建一组元素,这些元素满足给定字符串输入和要匹配的值的条件。

[result group] = Regex.Matches([InputString], [Match Pattern])
MatchCollection
将返回找到的元素集合。
检查
[MatchCollection].Count
值以验证搜索是否有任何有效结果。

每个
匹配
标识其状态(布尔
成功
)、基础
(模式)在
[InputString]
值的
索引位置
及其
长度

例如:删除
输入中出现的第二个字符串
“UUG-”
字符串:

Imports System.Text.RegularExpressions

Dim input As String = "UUG-AAA-UUG-CAC-ACC-GGG-GGG-"
Dim xMatches As MatchCollection = Regex.Matches(input, "UUG" & "-")

Dim output As String = input.Remove(xMatches(1).Index, xMatches(1).Length)
输出的结果

"UUG-AAA-CAC-ACC-GGG-GGG-"

您没有指定要删除的输入字符串中的元素。此方法允许您选择使用其
索引
位置和/或显示顺序的字符串。

您不使用字符串-您正在使用代码集合。
因此,将完整字符串视为只用于显示代码的格式,但对集合进行操作。

这样,您的代码对其他人来说就更简单易懂了(不像Regex;)

Dim allCodes作为来自{“UUG”、“UUG”、“CAC”、“ACC”、“GGG”、“GGG”的新列表(字符串)
'显示所有代码
codon.Text=String.Join(“-”,allCodes)”输出:UUG-UUG-CAC-ACC-GGG-GGG
'删除给定值的第一个外观
allCodes.Remove(“UUG”)'allCodes=>{“UUG”、“CAC”、“ACC”、“GGG”、“GGG”}
一行简单易懂的代码。
-删除特定对象的第一个引用

代码的其他操作应该变得足够简单。根据您的逻辑,您可以使用多个集合,然后使用代码将这些集合转换为字符串,以便向用户显示

如果您想继续使用当前的实现,那么您可以简单地将字符串转换为代码列表,删除第一次出现,然后再转换回字符串

Dim codes As String = "UUG-UUG-CAC-ACC-GGG-GGG-"

Dim list = codes.Split("-"c).ToList()
list.Remove("UUG")

codes = String.Join("-", list) 'output: UUG-CAC-ACC-GGG-GGG-

您没有使用字符串-您正在使用代码集合。
因此,将完整字符串视为只用于显示代码的格式,但对集合进行操作。

这样,您的代码对其他人来说就更简单易懂了(不像Regex;)

Dim allCodes作为来自{“UUG”、“UUG”、“CAC”、“ACC”、“GGG”、“GGG”的新列表(字符串)
'显示所有代码
codon.Text=String.Join(“-”,allCodes)”输出:UUG-UUG-CAC-ACC-GGG-GGG
'删除给定值的第一个外观
allCodes.Remove(“UUG”)'allCodes=>{“UUG”、“CAC”、“ACC”、“GGG”、“GGG”}
一行简单易懂的代码。
-删除特定对象的第一个引用

代码的其他操作应该变得足够简单。根据您的逻辑,您可以使用多个集合,然后使用代码将这些集合转换为字符串,以便向用户显示

如果您想继续使用当前的实现,那么您可以简单地将字符串转换为代码列表,删除第一次出现,然后再转换回字符串

Dim codes As String = "UUG-UUG-CAC-ACC-GGG-GGG-"

Dim list = codes.Split("-"c).ToList()
list.Remove("UUG")

codes = String.Join("-", list) 'output: UUG-CAC-ACC-GGG-GGG-

这是可行的,但直到文本框中只有一个字符串为止。例如,如果我在文本框中插入三个“UUG”,然后删除两个,那么在尝试删除第三个时会出现异常。有没有办法解决这个问题?我试图在只剩下一项时清除文本框,但它又抛出了一个异常。@w60您是否检查了
[MatchCollection].Count
属性?如果
=1
,则集合中只有1个元素。此元素位于索引
0
,而不是
1
当您收到
异常时
,您必须指定该异常是什么。这是一家公司吗