C# - 搜索字符串

标签 c# string search full-text-search

我似乎找不到解决这个问题的好方法。我有一系列字符串,这些字符串是从我收到的有关设备丢失或被盗的报告中输入的。我在表单的其余部分中一直使用 string.IndexOf 函数,并且效果很好。此问题与显示设备是否丢失或被盗的字段有关。

示例:

"Lost or Stolen? Lost"

"Lost or Stolen? Stolen"

我需要能够阅读此内容,但是当我执行string.IndexOf(@"Lost")时,它总是会返回丢失,因为它在问题中。

不幸的是,我无法以任何方式更改表单本身,并且由于提交方式的性质,我不能只编写代码来删除字符串中的前 15 个左右的字符,因为这可能太少了在某些情况下。

我真的很喜欢 C# 中的一些东西,它允许我在找到第一个结果后继续搜索字符串,以便逻辑如下所示:

 string my_string = "Lost or Stolen? Stolen";

 searchFor(@"Stolen" in my_string)
 {
      Found Stolen;
      Does it have "or " infront of it? yes;
      ignore and keep searching;
      Found Stolen again;
      return "Equipment stolen";
 }

最佳答案

这里有几个选项。您可以查找空格的最后一个索引并获取字符串的其余部分:

string input = "Lost or Stolen? Stolen";
int lastSpaceIndex = input.LastIndexOf(' ');
string result = input.Substring(lastSpaceIndex + 1);
Console.WriteLine(result);

或者您可以将其拆分并取最后一个单词:

string input = "Lost or Stolen? Lost";
string result = input.Split(' ').Last();
Console.WriteLine(result);

正则表达式也是一种选择,但考虑到上面的更简单的解决方案,就有点过分了。适合这种情况的一个不错的快捷方式是使用 RegexOptions.RightToLeft 选项来获取从右侧开始的第一个匹配项:

string result = Regex.Match(input, @"\w+", RegexOptions.RightToLeft).Value;

关于C# - 搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9932199/

相关文章:

c# - tweetinvi 总是返回 null

python - Python 中的字符串切片/子字符串/范围

java - Java 最多只拆分 5 个逗号

sql - 带有 Coldfusion 的 MYSQL - 创建搜索功能的解决方案?

ios - Foursquare API-按地址搜索

c# - 通过 TCP/IP 发送文本

c# - 如何在 C# 中匹配两个列表的项目?

c# - 如何使用 .NET Framework 3.5 中的数据注释对 C# 类进行属性验证?

Python 操作字符串

elasticsearch - ElasticSearch:查询数字字段以像在字符串字段中一样使用like子句