如何使用C#从字符串中拆分可变数据

时间:2012-01-09 10:16:57

标签: c#

有人可以帮我改进这部分代码吗?

字符串是这样的:当前每小时价格(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

感谢您的帮助

2 个答案:

答案 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)用替换字符串

替换web的完整性

答案 1 :(得分:1)

有很多未解决的问题,但你可以简单地做这样的事情。当然假设格式始终保持不变。 :)

        string[] split = web.Split('(');

        string result = "Current Hourly Price: " + split[2].Remove(split[2].Length-1);

        Console.WriteLine(result);

我建议您使用更清洁的东西,比如使用已编译的正则表达式。有很多方法可以提高正则表达式的性能,并且如果格式因某种原因而发生更改,则更容易更新。