【问题标题】:C# Replace and Remove textC# 替换和删除文本
【发布时间】:2018-07-13 09:16:01
【问题描述】:

我在如何替换和删除标签中的文本方面遇到了一点问题。

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# text label


    【解决方案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})";
    

    编辑:正则表达式的模式^(?&lt;text&gt;.*?)(?&lt;number&gt;[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    
    

    【讨论】:

    • 此代码有效。但我不知道正则表达式。请问“^(?.*?)(?[0-9]+)”是什么意思?
    • @Eddga:我已经编辑了我的答案(添加了模式解释);有关正则表达式的进一步阅读:docs.microsoft.com/en-us/dotnet/standard/base-types/…
    • @Eddga:检查模式:"^(?&lt;text&gt;.*?)(?&lt;number&gt;[0-9]+)":您似乎跳过最后一个+。如果这没有帮助,请提供您的代码
    【解决方案2】:

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

     var x = //get the text
    
     var textToDisplay = x.Substring(0, x.IndexOf("b"); 
    
     Label1.Text = textToDisplay; 
    

    【讨论】:

    • 这个答案也有效。但是如果他们有更多的用户在线 b..... 10. 它会删除所有的 b.... 以持续下去。所以我认为这太具体了。但感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2020-01-19
    • 1970-01-01
    相关资源
    最近更新 更多