【问题标题】:What is the most efficient way to retrieve a particular section of text from a string从字符串中检索特定文本部分的最有效方法是什么
【发布时间】:2016-02-06 04:36:21
【问题描述】:

考虑对从服务返回的某些 xml 执行的搜索的以下结果集。

我需要从中提取 internalref 属性的值(它位于所示消息框表示的最后一行的末尾)。首先,当我得到它时,它不再是有效的 xml,而是一个字符串。其次,它可能不包含 internalref 值(这点至少很容易,我可以检查 resultset.contains("internalref"))。

因此,假设确实如此,我可以进行索引搜索,以提供 internalref 开始的索引,根据定义,我可以在其中添加 13 以使我进入我感兴趣的位的开头。

以此为起点,我可以搜索下一个引号的索引,然后返回中间索引点处的字符。

我不禁想到,可能有一种更简单的方法可以做到这一点,但我把事情过于复杂化了。对 internalref 存在的初始检查是给定的,但如果有更简单的方法来提取随后的引号之间的字符串位,我很想知道如何去做。我要的数字(是的,它需要转换,但这不是问题,可能是 1 到 15 个字符之间的任何长度。

【问题讨论】:

  • 为什么它不再是有效的 XML?如果是的话,它会让你的生活变得更加轻松。否则只能手动解析。

标签: vb.net string substring string-matching


【解决方案1】:

这次我更喜欢使用 XML、SelectNode 和 XPath 进行解析,但这里有一个快速而肮脏的方法应该可以工作。假设你已经确定 internalref= 存在并且没有空格,那么试试:

Dim i As Integer = CInt(Val(Split(s, "internalref=""")(1)))

我假设这个数字是一个整数,但如果它是一个双精度数,则删除对 CInt 的调用。

Dim i As double = Val(Split(s, "internalref=""")(1))

【讨论】:

  • @DomSinclair 谢谢。我应该提到我假设该字符串位于一个名为 s 的变量中,您已经知道了,但我提到它是为了让阅读这篇文章的人受益。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-19
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
相关资源
最近更新 更多