【问题标题】:How take the string between two symbols c#? [closed]c# 如何取两个符号之间的字符串? [关闭]
【发布时间】:2014-01-14 08:29:45
【问题描述】:

在这个字符串中输出!re=.id=*2CB=name=xxname123=service=vpn=caller-id= 我只需要这个以* 开头的字符串,它是一个以= 符号结尾的id 常量。我使用了子字符串,但我注意到数字变为 3 和 4 位甚至更多。 我的代码不再工作了。我正在尝试制作一个仅匹配 .id=XXXX= 那些 = 符号之间的字符串的正则表达式。

【问题讨论】:

  • 您标记了问题正则表达式,但您使用了正则表达式吗?它在哪里?你的代码是什么样的?
  • 与其用一个大句子来描述你的代码,你为什么不直接发布呢?此外,说它“没有用”绝对不会告诉我们您遇到的问题。编译错误?运行时异常?意外行为?更具体。

标签: c# regex string visual-studio substring


【解决方案1】:

我不确定这是否符合您的需要,但您可以尝试:

var myString = "!re=.id=2CB=name=xxname123=service=vpn=caller-id=";
var match = new Regex(@"\.id=(?<value>[^=]*)=").Match(myString);
var id = match.Groups["value"].Value;


我没有针对特定的语法对此进行测试,但这应该可以让你得到捕获的字符串。如果您需要跨多个项目执行此操作,您可以修改它以遍历 MatchCollection。

foreach(var match in new Regex(@"\.id=(?<value>[^=]*)=").Matches(myString) 
{
    var id = match.Groups["value"].Value; //Or do something else with the value
}

【讨论】:

  • 谢谢我去试试。
【解决方案2】:
string input = " !re=.id=2CB=name=xxname123=service=vpn=caller-id=";
var id = Regex.Match(input, @"\.id=(.+?)=").Groups[1].Value;

【讨论】:

  • 这有效@"\.id=(.+?)=" 但结果给了我这个例如: .id=*FFFFFFFE= 我只需要 "*FFFFFFE" 有一种方法清理它?
  • @user3104909 不,它按预期返回*FFFFFFE。见上面的代码。我使用 Groups[1]Value 而不是 Match
  • 是的,我测试错了谢谢!!!
猜你喜欢
  • 2018-03-25
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多