【问题标题】:VB 2010 chop off part of string and get string up to next '\' in filepathVB 2010 切掉部分字符串并在文件路径中获取字符串到下一个 '\'
【发布时间】:2012-10-24 16:00:36
【问题描述】:

我找不到解决方案如何切断部分字符串(文件路径)并使用剩下的内容来获取另一个字符串。

例如:如果我有文件路径:Q:\2456_blah_blah\file.txt 并且我想将整个文件路径放入一个数组中并从左边的字符 0 到 8 删除(这对于我的应用程序是一致的)所以我会为我的数组留下了'blah_blah\file.txt'。

(blah_blah 部分将是动态长度,但始终是字母。)

那么我想把'blah_blah\file.txt'从开头拉到下一个'\'符号,得到“blah_blah”作为字符串。在这一点上,我对 VB 字符串不太了解,所以任何帮助都将不胜感激。这只是我的想法,如果有更简单的解决方案,我会全力以赴。

谢谢,

【问题讨论】:

  • 您要删除的字符串部分是否总是索引 0 到 8,还是会从一个字符串变为另一个字符串?

标签: string vb.net get filepath


【解决方案1】:

两个Substring 调用应该可以做到这一点。

Dim str As String = "Q:\2456_blah_blah\file.txt"
str = str.Substring(8, str.Length - 8)
Dim blah As String = str.Substring(0, str.IndexOf("\"))

【讨论】:

  • 如果文件名超过 8 个字符或路径中的数字达到 1 万会怎样?当然,OP 声明他的字符串的第一部分最多 8 个字符是一致的,但没有说文件名是一致的长度。
  • @vane - 不确定我是否遵循。考虑到字符串的长度,因此路径或文件名的长度没有区别。如果8 变成变量,不管OP怎么说,那么它可以被替换为一个方法接受的变量。
  • 我尝试了多种文件路径,效果很好。再次感谢。
  • @keyboardP 你是对的,我的错,长文件名不会影响其功能。但是,如果字符串的开头进入 10000 或由于某种原因发生更改,这将失败。试试字符串“q:\10000_blah_blah\file.txt”
  • @vane - 但这不是问题所在。 OP 要求文件路径的一个非常具体的部分。如果 OP 说这是多种文件路径之一,或者 8 是可变的,那么答案会更通用。您的答案假定下划线始终是分隔符,如果路径是 Q:\10000\blah_blah\file.txt,它将失败。
【解决方案2】:

您是否正在寻找这样的东西。由于不了解所有细节,因此很难创建适合您需求的东西,但我会试一试。无论“blah_blah”有多大,无论文件名有多长,无论字符串的第一部分有多长,无论路径有多深,这都会返回字符串的 blah_blah 部分。

Dim test As String = "c:\34242_blah_blah\test.txt"

Dim startPos As Integer = test.IndexOf("_") + 1
Dim endPos As Integer = test.IndexOf("\", startPos)
Dim result As String = test.Substring(startPos, endPos - startPos)

【讨论】:

  • 由于某种原因它不喜欢“开始”和“结束”,因为它们没有被声明,我是否缺少参考?
  • 大声笑,我很抱歉。我用c#写的,让我把它改成vb。我的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
相关资源
最近更新 更多