【问题标题】:How to check if a string starts and ends with specific strings?如何检查字符串是否以特定字符串开头和结尾?
【发布时间】:2009-09-10 11:12:12
【问题描述】:

我有一个类似的字符串:

string str = "https://abce/MyTest";

我想检查特定字符串是否以https:// 开头并以/MyTest 结尾。

我怎样才能做到这一点?

【问题讨论】:

  • 你确定你想要 //MyTest 吗?这似乎不是一个有效的网址。
  • 你关心案例吗?可以是mytest吗?

标签: c# .net regex


【解决方案1】:

这个正则表达式:

^https://.*/MyTest$

会按照你的要求去做。

^ 匹配字符串的开头。

https:// 将完全匹配。

.* 将匹配任意数量的任何类型的字符(* 部分)(. 部分)。如果要确保中间至少有一个字符,请改用.+

/MyTest 完全匹配。

$ 匹配字符串的结尾。

要验证匹配,请使用:

Regex.IsMatch(str, @"^https://.*/MyTest$");

更多信息请访问 MSDN Regex 页面。

【讨论】:

  • @Steve3000:终于!我花了最后三个小时被“打败”:)
  • 不明白为什么这不是公认的答案,首先是正确的!
  • @Stevo:感谢您的支持。其实也不完全正确。某处有一个额外的斜线。将修复...
  • @Stevo3000:确实是正确的,尽管我提供了运行比赛所需的实际代码(并且可能因此获得更高的投票)。无论如何,OP似乎改变了他接受的答案。 :P
  • @Noldorin:你是对的。我的代码是后来添加的,当时我注意到了 .net 标签。 FWIW 我以前曾投票过你。
【解决方案2】:

尝试以下方法:

var str = "https://abce/MyTest";
var match = Regex.IsMatch(str, "^https://.+/MyTest$");

^ 标识符匹配字符串的开头,而$ 标识符匹配字符串的结尾。 .+ 位仅表示任何字符序列(空序列除外)。

当然,您需要为此导入 System.Text.RegularExpressions 命名空间。

【讨论】:

    【解决方案3】:

    我想检查特定字符串是否以“https://”开头并以“/MyTest”结尾。

    好吧,您可以为此使用正则表达式。但是say what you mean 更清楚(并且可能更快):

    str.StartsWith("https://") && str.EndsWith("/MyTest")
    

    您不必担心匹配字符串中的任何字符是否需要在正则表达式中转义。 (对于这个例子,他们没有。)

    【讨论】:

      【解决方案4】:

      在 .NET 中:

      ^https://.*/MyTest$
      

      【讨论】:

        【解决方案5】:

        试试Expresso,它非常适合构建 .NET 正则表达式并同时教你语法。

        【讨论】:

          【解决方案6】:

          生成正则表达式的HAndy工具

          http://txt2re.com/

          【讨论】:

            最近更新 更多