【问题标题】:Get specific interval using substring [duplicate]使用子字符串获取特定间隔[重复]
【发布时间】:2019-02-25 13:40:00
【问题描述】:

我有以下字符串。

"<This is my string=NHUYT>"

我想得到"=""&gt;" 之间的词,但我想让这个通用,而不仅仅是这个词 NHUYT。

使用我尝试过的子字符串:

var line = "<This is my string=NHUYT>"
var index = line.Trim().IndexOf("=");
var lastIndex = line.Trim().IndexOf(">");

var id = line.Substring(index, lastIndex);

但我不能这样做,因为lastIndex 实际上是长度,那么我该怎么做呢?

Substring(Int32, Int32) 从此实例中检索子字符串。这 子字符串从指定的字符位置开始并具有指定的 长度。

【问题讨论】:

  • but I would to make this generic, not for only this word NHUYT. 通用究竟是什么意思?
  • lastIndex - index?
  • 您不应该提供最后一个index,而是提供length,即lastIndex - firstIndex
  • ...虽然我认为你的意思是(index + 1, lastIndex - (index + 1)),否则你会得到“=NHUYT”。为了保持一致性,您应该在 Substringing 之前修剪,和/或首先修剪线条。
  • 你描述更多可能出现的字符串是什么?最好能更好地理解它们的规则。示例:是否有类似“”的内容,其中包含另一个相等?

标签: c#


【解决方案1】:

您可以通过从最后一个索引中减去第一个索引来获得长度。此外,如果您要访问 Trim(),请在初始字符串中执行一次,而不是在找到 IndexOf 时执行此操作,因为当您执行子字符串时,您不会修剪并且索引可能会关闭。

var line = "<This is my string=NHUYT>".Trim();
var index = line.IndexOf("=") + 1;
var lastIndex = line.IndexOf(">");

var id = line.Substring(index, lastIndex - index);

【讨论】:

  • 应该是index + 1,见this fiddle
  • @MikaelDúiBolinder 谢谢,已编辑。
  • 可以在this answer 中看到需要考虑“key”长度,在这种情况下“key”的长度为 1,“=”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 2016-03-18
  • 2018-02-28
相关资源
最近更新 更多