C#替换和删除文本

时间:2018-07-13 09:16:01

标签: c# text label

我在替换和删除标签上的文字方面遇到了一些问题。

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: ???

谢谢。

2 个答案:

答案 0 :(得分:1)

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

  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    

答案 1 :(得分:0)

您可以尝试使用子字符串。像这样:

 var x = //get the text

 var textToDisplay = x.Substring(0, x.IndexOf("b"); 

 Label1.Text = textToDisplay;