2 回答

TA贡献1830条经验 获得超3个赞
正则表达式可以帮助满足这一要求。您可以使用正则表达式定义搜索模式,库将找到与该模式匹配的所有结果。下面的代码查找名称“sara”之后的数字。
using System;
using System.Text.RegularExpressions;
namespace consoleapp
{
class Program
{
static void Main(string[] args)
{
string text = "john monday 500 sara monday 600 sunny monday 1200 john monday 500 sara monday 300 sunny monday 2200 john monday 400 sara monday 100 sunny monday 500 john monday 520 sara monday 600 sunny monday 10 john monday 990 sara monday 850 sunny monday 1000 john monday 300 sara monday 200 sunny monday";
var saraPattern = new Regex(@"sara\s\w+\s\d+");
var numberPattern = new Regex(@"[\d\.\,]+");
var matches = saraPattern.Matches(text);
foreach (Match match in matches)
{
var numbermatch = numberPattern.Match(match.Value);
var number = float.Parse(numbermatch.Value);
Console.WriteLine(number);
}
Console.ReadKey();
}
}
}
关于模式的解释:
saraPattern ( sara\s\w+\s\d+) 指出:找到一个字符序列,它以 " sara" 开头,然后是空格字符 ( \s),然后是一个或多个单词字符 ( \w+),然后再次是退格符 ( ),\s然后是一个或多个小数字符 ( \d+)
这种模式会找到像“sara monday 600”这样的序列
numberPattern ( [\d\.\,]+) 声明:查找包含一个或多个以下任意字符的字符序列:十进制 ( \d) 或逗号 ( \,) 或点 ( \.)
此模式将从先前找到的序列(例如“sara monday 600”)中提取数字(例如 600)
您可以在维基百科 ( https://en.wikipedia.org/wiki/Regular_expression )上检查正则表达式,或者您可以遵循此站点上的基本教程:https ://regexone.com/

TA贡献1803条经验 获得超6个赞
您的代码中有错误。
你的这一行:
int index1 = Convert.ToInt32(readMeText.IndexOf('SARA', 0));
应该:
int index1 = Convert.ToInt32(readMeText.IndexOf("sara", 0));
评论: 1. 您需要使用 "(引号)而不是 '(撇号) 2. 您的字符串中没有“SARA”,而是“sara”,这就是为什么您现在使用 -1 获得索引。
如果对您有帮助,请告诉我!
- 2 回答
- 0 关注
- 106 浏览
添加回答
举报