从 last 开始搜索字符串并找到字符串的第二次出现
search through the string from last and find the second occurrence of a string
我有一个搜索字符串的要求,需要从最后一个(升序)找到同一字符串的第二次出现,并且必须从该搜索字符串到文件中的最后一个读取它。
示例字符串:
START BATCH;Cube check SUCCESS;Cube Check Status Time;2/22/2017 5:54:02AM; Entered try;Web check Passed;STOP BATCH;START BATCH;Cube check SUCCESS;Cube Check Status Time
从这个分号分隔的字符串中,我需要从最后一个(从下到上)搜索第二个重新出现的字符串 START BATCH
,然后从该字符串中我需要将整个子字符串存储到字符串数组中。
早些时候我能够通过 LastIndexof 方法获取字符串。但是这次我需要得到同一个字符串的第二次出现。
非常感谢您的帮助。
您可以使用带有 startIndex
参数的 LastIndexOf()
版本:
public int FindSecondLastIndex(string input, string search)
{
int lastIndex = input.LastIndexOf(search);
if (lastIndex <= 0) return -1;
return input.LastIndexOf(search, lastIndex - 1);
}
并使用它:
string input = "START BATCH;Cube check SUCCESS;Cube Check Status Time;2/22/2017 5:54:02AM; Entered try;Web check Passed;STOP BATCH;START BATCH;Cube check SUCCESS;Cube Check Status Time"
string search = "START BATCH";
Console.WriteLine(FindSecondLastIndex(input, search));
输出:0
.
您可以通过检查长度来稍微提高性能:
if (lastIndex < search.Length) return -1;
return input.LastIndexOf(search, lastIndex - search.Length);
并可能将其实现为 string
的扩展:
public static class StringExtension
{
public static int SecondLastIndexOf(this string input, string search)
{ ... }
}
所以你可以像
一样使用它
var index = input.SecondLastIndexOf(search);
我有一个搜索字符串的要求,需要从最后一个(升序)找到同一字符串的第二次出现,并且必须从该搜索字符串到文件中的最后一个读取它。
示例字符串:
START BATCH;Cube check SUCCESS;Cube Check Status Time;2/22/2017 5:54:02AM; Entered try;Web check Passed;STOP BATCH;START BATCH;Cube check SUCCESS;Cube Check Status Time
从这个分号分隔的字符串中,我需要从最后一个(从下到上)搜索第二个重新出现的字符串 START BATCH
,然后从该字符串中我需要将整个子字符串存储到字符串数组中。
早些时候我能够通过 LastIndexof 方法获取字符串。但是这次我需要得到同一个字符串的第二次出现。
非常感谢您的帮助。
您可以使用带有 startIndex
参数的 LastIndexOf()
版本:
public int FindSecondLastIndex(string input, string search)
{
int lastIndex = input.LastIndexOf(search);
if (lastIndex <= 0) return -1;
return input.LastIndexOf(search, lastIndex - 1);
}
并使用它:
string input = "START BATCH;Cube check SUCCESS;Cube Check Status Time;2/22/2017 5:54:02AM; Entered try;Web check Passed;STOP BATCH;START BATCH;Cube check SUCCESS;Cube Check Status Time"
string search = "START BATCH";
Console.WriteLine(FindSecondLastIndex(input, search));
输出:0
.
您可以通过检查长度来稍微提高性能:
if (lastIndex < search.Length) return -1;
return input.LastIndexOf(search, lastIndex - search.Length);
并可能将其实现为 string
的扩展:
public static class StringExtension
{
public static int SecondLastIndexOf(this string input, string search)
{ ... }
}
所以你可以像
一样使用它var index = input.SecondLastIndexOf(search);