【问题标题】:Check if X contains Y, and also check if Y has Z or W amount of characters behind/after it检查 X 是否包含 Y,并检查 Y 后面/之后是否有 Z 或 W 数量的字符
【发布时间】:2020-11-20 03:48:32
【问题描述】:
string myString = www.stackoverflow.com  
  1. 我需要检查 myString 是否以 . 和任何其他 3 个字符结尾,我更喜欢使用 EndsWith() 方法,但如果不可能,任何其他方法都可以。

  2. 我如何检查 myString 是否包含一个 . 后面除了 www 之外的任何内容(我想知道如何检查它之前/之后是否有任何 Y 个字符),我试过了这个

         if (!myString.Contains(".".StartsWith("www")) &&  myString.Contains("."))
         {
             Console.WriteLine("Test");
         }
    

但是它给出了一个错误,说它不能从 bool 转换为字符串,我也尝试创建 dynamic dot = "."; 并使用它来代替 ".",即使它编译它仍然会在我运行它时崩溃。

【问题讨论】:

  • 使用 Regex.Match
  • ".".StartsWith("www") 返回一个布尔值,当您将它传递给 myString.Contains(...) 时,它会给您错误,因为 .Contains(...) 需要一个字符串来搜索。
  • 您遇到了XY problem,而不是询问如何验证网址,而是询问您尝试使用字符串方法的解决方案。
  • @Sinatr 是的,但不完全,我仍然想知道如何做我列出的事情,以防我不检查网站

标签: c# contains


【解决方案1】:

你可以使用正则表达式:

            string input = "www.stackoverflow.com";
            int numOfChars = 13;
            Regex rex = new Regex($"www.[A-Za-z0-9]{{{numOfChars}}}.[A-Za-z]{{3}}");
            var res = rex.IsMatch(input); // res == true

【讨论】:

    【解决方案2】:
            string myString = "www.stackoverflow.com";
    
            var splittedString = (myString.Split('.'));
    
            if (splittedString[0] == "www")
            {
                ///before first occurrence of . has wwww
            }
    
            if (splittedString[splittedString.Length-1].Length == 3)
            {
                //has 3 characters after last .
            }
    

    【讨论】:

    • 我不明白最后一部分。字符串被分成三半,你不应该写if (splittedString[2].Length == 3)吗?你怎么说splittedString.Length而不指定哪个剪辑?
    • @Octavylon 这个特定的字符串有两个 .,因此是 3 个部分。一般来说,如果你不知道字符串有多少个点,你必须用我写的表达式。
    • 但是你怎么说[splittedString.Length -1]而不指定剪辑的哪个部分?它将如何决定哪个剪辑?
    • @Octavylon Length-1 将永远是最后一个剪辑
    【解决方案3】:

    如果您希望能够验证所有网站网址,请使用 System.Uri

    string url = "www.helloWorld.com";
    if(Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute))
      {
      //Do Something
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-25
      • 2020-09-19
      相关资源
      最近更新 更多