【问题标题】:edit delimited string with regular expression使用正则表达式编辑分隔字符串
【发布时间】:2010-02-04 15:54:36
【问题描述】:

我有一个字符串,我想编辑它的一部分。 字符串就像

"1:5,7:9,13:20,130:510,134:2,"

现在我要做的就是删除这些数字的第一部分,例如

"5,9,20,540,2,"

我尝试了一堆组合,但没有达到我的预期。

Regex rx = new Regex("[:]\\d+[,]");
    foreach (Match mx in rx.Matches("10:20,20:30,"))
    {
        Muhaha.InnerText += mx;
    }

它返回“:20,:30”,但我只想捕获数字,注意标点符号。

【问题讨论】:

  • 正则表达式似乎有点矫枉过正。
  • 是的,我知道。但我仍然想知道如何把这件事做好。
  • 如果正则表达式过大,应该如何解析?用逗号分割,为每个部分找到分号并删除它?正则表达式的解决方案(@Aistina)更具可读性。

标签: c# regex csv


【解决方案1】:

改用Replace 怎么样?

Regex r = new Regex("\\d+:");
string str = r.Replace("1:5,7:9,13:20,130:510,134:2,", "");
Console.WriteLine(str);

打印:

5,9,20,510,2,

【讨论】:

  • 效果很好,谢谢。 (有趣..我很确定我之前尝试过替换它。)
【解决方案2】:

如果你想在加入之前操纵这些数字,试试这个(如果不是,你应该使用@Aistina 回答):

foreach(Match m in Regex.Matches(
    "1:5,7:9,13:20,130:510,134:2,", 
    @":(?'number'\d+)"))
{
    Console.WriteLine(m.Groups["number"].Value);
}

【讨论】:

  • 没有什么简单的方法可以避免捕获“:”和“,”吗?
猜你喜欢
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 2017-01-18
  • 1970-01-01
相关资源
最近更新 更多