有人可以帮我改进这部分代码吗?
字符串是这样的:当前每小时价格(HOEP):$ 20.09 / MWh(2.01¢/ kWh)。这是网站上的一行,其中20.09和2. 01的数据在时间内发生变化
static void get_HOEP(string web)
{
int x = web.IndexOf("Current Hourly Price");
...
}
我想要显示如下内容:当前每小时价格:2.01¢/ kWh
感谢您的帮助
答案 0 :(得分:3)
使用正则表达式,结果将在变量结果中。
var source="Current Hourly Price (HOEP): $20.09/MWh (2.01¢/kWh)";
var regex=new Regex(@"Current Hourly Price \(HOEP\): \$\d+\.\d\d/MWh \((\d+\.\d\d)¢/kWh\)");
var result=regex.Replace(source,"Current Hourly Price $1 ¢/kWh");
- 编辑 - 全班版
public static class PriceParser {
private const string MATCH_STRING = @"Current Hourly Price \(HOEP\): \$\d+\.\d\d/MWh \((\d+\.\d\d)¢/kWh\)";
private const string REPLACE_STRING = @"Current Hourly Price $1 ¢/kWh";
private static readonly Regex regex=new Regex(MATCH_STRING,RegexOptions.Compiled);
private static readonly Regex entirePageRegex=new Regex(string.Format("^.*{0}.*$",MATCH_STRING),RegexOptions.Compiled|RegexOptions.Singleline);
public static void get_HEOP1(string web) {
Console.WriteLine(regex.Replace(web,REPLACE_STRING));
}
public static void get_HEOP2(string web) {
Console.WriteLine(entirePageRegex.Replace(web,REPLACE_STRING));
}
}
PriceParser.get_HEOP1(web)
只是替换搜索字符串中的匹配
PriceParser.get_HEOP2(web)
用替换字符串
答案 1 :(得分:1)
有很多未解决的问题,但你可以简单地做这样的事情。当然假设格式始终保持不变。 :)
string[] split = web.Split('(');
string result = "Current Hourly Price: " + split[2].Remove(split[2].Length-1);
Console.WriteLine(result);
我建议您使用更清洁的东西,比如使用已编译的正则表达式。有很多方法可以提高正则表达式的性能,并且如果格式因某种原因而发生更改,则更容易更新。