首页 > 解决方案 > C# 替换和删除文本

问题描述

我对如何替换和删除标签中的文本有一点问题。

label1.Text = Users online: 1   browsing: 1 pages

我正在使用 gethtmldocument 来接收label1.Text类似于上面的内容。我的问题是我希望文本只显示Users Online: (number)

现在我正在使用label1.Text.Remove(17). 所以我会得到Users online: 1,但问题是当用户超过限制时10,文本将不再1计数10

我正在尝试使用label1.Text.replace("browsing: 1 pages",""). 但是当用户在线时,browsing: 1 pages将更改为browsing: 2 pages或其他。

所以我的问题是我怎样才能只收到文本Users online: ???

谢谢你。

标签: c#textlabel

解决方案


尝试使用正则表达式:匹配组并以所需的方式表示它们:

  using System.Text.RegularExpressions;

  ...

  string source = "Users online: 479  browsing: 153 pages";

  // match.Groups["text"]   - "Users online: "
  // match.Groups["number"] - "479"
  var match = Regex.Match(source, "^(?<text>.*?)(?<number>[0-9]+)");

  // Users online: (479)
  label1.Text = $"{match.Groups["text"].Value.Trim()} ({match.Groups["number"].Value})";

编辑:正则表达式的模式^(?<text>.*?)(?<number>[0-9]+)解释:

 ^               - anchor: string's beginning
 (?<text> ...)   - group named "text" which contains
 .*?             - any characters, as few as possible
 (?<number> ...) - group named "number" which contains
 [0-9]+          - digits (char in [0..9] range); "+" - at least one    

推荐阅读