2 回答

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
正則表達(dá)式可以幫助滿足這一要求。您可以使用正則表達(dá)式定義搜索模式,庫(kù)將找到與該模式匹配的所有結(jié)果。下面的代碼查找名稱“sara”之后的數(shù)字。
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();
}
}
}
關(guān)于模式的解釋:
saraPattern ( sara\s\w+\s\d+) 指出:找到一個(gè)字符序列,它以 " sara" 開(kāi)頭,然后是空格字符 ( \s),然后是一個(gè)或多個(gè)單詞字符 ( \w+),然后再次是退格符 ( ),\s然后是一個(gè)或多個(gè)小數(shù)字符 ( \d+)
這種模式會(huì)找到像“sara monday 600”這樣的序列
numberPattern ( [\d\.\,]+) 聲明:查找包含一個(gè)或多個(gè)以下任意字符的字符序列:十進(jìn)制 ( \d) 或逗號(hào) ( \,) 或點(diǎn) ( \.)
此模式將從先前找到的序列(例如“sara monday 600”)中提取數(shù)字(例如 600)
您可以在維基百科 ( https://en.wikipedia.org/wiki/Regular_expression )上檢查正則表達(dá)式,或者您可以遵循此站點(diǎn)上的基本教程:https ://regexone.com/

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
您的代碼中有錯(cuò)誤。
你的這一行:
int index1 = Convert.ToInt32(readMeText.IndexOf('SARA', 0));
應(yīng)該:
int index1 = Convert.ToInt32(readMeText.IndexOf("sara", 0));
評(píng)論: 1. 您需要使用 "(引號(hào))而不是 '(撇號(hào)) 2. 您的字符串中沒(méi)有“SARA”,而是“sara”,這就是為什么您現(xiàn)在使用 -1 獲得索引。
如果對(duì)您有幫助,請(qǐng)告訴我!
- 2 回答
- 0 關(guān)注
- 100 瀏覽
添加回答
舉報(bào)