使用c#搜索文本,但答案在关键字旁边

本文关键字:关键字 答案 搜索 文本 使用 | 更新日期: 2023-09-27 18:02:11

我有一个字符串,我需要搜索。

为例,我需要搜索"Exif Byte Order"关键字,输出它旁边的整个单词

Little-endian

我该怎么做?我试着寻找解决方案,但我找不到一个类似的问题。

这是字符串

File    File Name   NHD-and-Chronicling-America_04.jpg
File    Directory   C:/Users/Desktop/images
File    File Size   65 kB
File    File Modification Date/Time 2016:08:04 14:16:37-07:00
File    File Access Date/Time   2016:08:10 13:38:40-07:00
File    File Creation Date/Time 2016:08:10 13:38:40-07:00
File    File Permissions    rw-rw-rw-
File    File Type   JPEG
File    File Type Extension jpg
File    MIME Type   image/jpeg
File    Exif Byte Order Little-endian (Intel, II)
File    Image Width 274
File    Image Height    498
File    Encoding Process    Baseline DCT, Huffman coding
File    Bits Per Sample 8
File    Color Components    3

使用c#搜索文本,但答案在关键字旁边

建议使用Linq:

  string source = ...
  string key = "Exif Byte Order";  
  var result = source
    .Split(new char[] {''r', ''n'}, StringSplitOptions.RemoveEmptyEntries)
    .Select(line => {
       int index = line.IndexOf(key, StringComparison.OrdinalIgnoreCase);
       return index < 0 ? null : line.Substring(index + key.Length).Trim();
     })
    .FirstOrDefault(line => line != null);
  // Little - endian(Intel, II)
  Console.Write(result);

如果您想准确地获得Little-endian,您可以尝试正则表达式而不是简单的line.IndexOf:

 var result = source
   .Split(new char[] {''r', ''n'}, StringSplitOptions.RemoveEmptyEntries )
   .Select(line => Regex.Match(line, "(?<=" + Regex.Escape(key) + @"'s*)(['w's-/]+)"))
   .FirstOrDefault(match => match.Success)
  ?.Value
  ?.Trim();

按搜索字符串拆分()字符串。你会得到一个以你想要的开头的字符串。也可以用空格分隔