【问题标题】:VB.net Trim functionVB.net 修剪功能
【发布时间】:2026-01-10 05:50:02
【问题描述】:

我有一个修剪字符串方法不完全工作的问题我已经查看了 MS Docs 并查看了论坛但没有运气......这可能是一些简单的东西或缺少其他一些参数。这只是一个样本, 请注意,我需要在 # 之前和之后提取文本,因此我计划使用 # 作为分隔符。修剪开始@#,修剪结束@#。根据我的理解,我不能使用最后一个索引或替换,它们没有方向。但也许我误解了 MS 文档关于修剪 Start 和 End 的问题...... 谢谢!

 Dim str As String = "this is a #string"
        Dim ext As String = str.TrimEnd("#")
        MsgBox(ext)

回答: 我找到了解决我的问题的方法,如果您遇到类似的情况,请参见下文: 第一个:修剪端不会扫描右侧的“字符”,因为我最初认为它只会从右侧删除它......我会说一个弱功能:)。 IndexOf 方向 ID 将是一个非常简单且有用的方法。问候我的回答由 Andrew 回答,谢谢!

如果您尝试根据 CHARACTER 分隔将 SINGLE String INTO - QTY 拆分并相应地填充字段,那么现在还有另一种解决方法。 答案是 ArrayList。 Array List 将标识每个字符串,这样您就可以避免重复填充等。之后您可以使用 CASE 或 IF 进行相应的填充。

Dim arrList As New ArrayList("this is a # string".Split("#"c)) ' Will build the list of your strings
Dim index As Integer = 1 ' this will help us index the strings 1st, 2nd and etc.
For Each part In arrList 'here we are going thru the list
Select Case index ' Here we are identifying which field we are populating

       Case 1 '1st string(split)
         MsgBox("1 " & arrList(0) & index) '1st string value left to SPLIT arrList(0). 

       Case 2 '2nd string(split)
         MsgBox("2 " & arrList(1) & index) '2nd string value left to SPLIT arrList(1).  
 End Select

         index += 1 'Here we adding one shift thru strings as we go 

 Next

【问题讨论】:

  • 这不是 TrimEnd 所做的。你需要 LastIndexOf() + SubString()
  • 该字符串的结尾没有“#”。
  • 也许您可以解释一下您实际想要实现的目标,而不是指望我们通过没有实现目标的代码来解决问题。
  • @jmcilhinney 我猜他想从字符串中删除哈希字符。
  • 我们为什么要猜测?如果我们必须猜测,那么这不是一个有效的问题,所以应该关闭它。

标签: string vb.net trim


【解决方案1】:

也许有更好的方法,因为我们知道有多种事情可以做同样的事情。 我使用的解决方案如下:

Dim arrList As New ArrayList("this is a # string".Split("#"c)) ' Will build the list of your strings
Dim index As Integer = 1 ' this will help us index the strings 1st, 2nd and etc.
For Each part In arrList 'here we are going thru the list
Select Case index ' Here we are identifying which field we are populating

       Case 1 '1st string(split)
         MsgBox("1 " & arrList(0) & index) '1st string value left to SPLIT arrList(0). 

       Case 2 '2nd string(split)
         MsgBox("2 " & arrList(1) & index) '2nd string value left to SPLIT arrList(1).  
 End Select

         index += 1 'Here we adding one shift thru strings as we go 

 Next

【讨论】:

    【解决方案2】:
    Dim str As String = "this is a #string"
    Dim parts = str.Split("#"c)
    
    For Each part in parts
        Console.WriteLine($"|{part}|")
    Next
    

    输出:

    |这是一个 | |字符串|

    【讨论】:

    • 谢谢你的回答,我以前试过这个。如果可能的话,在我需要再次为 NewlLine 重新评估字符串之后,我遇到的复杂情况)我还不知道。用第 1 个填充表 1,用第 2 个填充表 2,因此我决定更容易修剪,谢谢
    • 不知道你刚才说了什么,但不管是什么,你肯定没有在问题中提到它。以后,我建议您多花点时间思考这个问题以及将来如何描述它,因为在发布您实际提出的问题的答案后,我们不必猜测和拖累您的每一个细节。跨度>
    • “修剪字符串方法不完全工作” - 这是一个原始问题....我很欣赏 ALT 方法....但目前的问题是为什么 TrimEND 不起作用,什么也没有此外,安德鲁在上面澄清了这一点,因为我误解了函数的工作原理。我还根据请求更新了原始问题。现在,如果我能获得有关如何获取数组分离的帮助,那就太好了,谢谢!
    • 意思是如何添加 |this is a| - 到 1 个表格和 |string|到第二张桌子,谢谢
    • @Alek parts 在这个答案中是一个数组。如果您想访问它的项目,请使用 part(0)part(1)
    【解决方案3】:

    而不是:

    Dim str As String = "this is a #string"
    Dim ext As String = str.TrimEnd("#")
    

    试试:

    Dim str As String = "this is a #string"
    Dim ext As String = str.Replace("#", "")
    

    【讨论】:

    • 谢谢你的回答不幸的是我需要在之前和之后拿起。我想如果我可以有一个 .END 工作,那么 Start 会工作。我需要拿起两个值并根据“#”的位置将它们分开我的计划是使用基于“#”的修剪开始修剪结束作为分隔
    • 对不起,但问题中没有定义。你只是想修剪问题中的哈希字符。
    • 本来想知道为什么 Trim 功能不起作用。但是由于有人要求详细说明,这就是我所做的。但我仍然想知道为什么修剪对我不起作用,谢谢