c# 如何取两个符号之间的字符串? [关闭]

Posted

技术标签:

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

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

【问题讨论】:

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

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

var myString = "!re=.id=2CB=name=xxname123=service=***=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=***=caller-id=";
var id = Regex.Match(input, @"\.id=(.+?)=").Groups[1].Value;

【讨论】:

这有效@"\.id=(.+?)=" 但结果给了我这个例如: .id=*FFFFFFFE= 我只需要 "*FFFFFFE" 有一种方法清理它? @user3104909 不,它按预期返回*FFFFFFE。见上面的代码。我使用 Groups[1]Value 而不是 Match 是的,我测试错了谢谢!!!

以上是关于c# 如何取两个符号之间的字符串? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C#:如何删除两个字符串之间的匹配子字符串?

如何计算 C# 中两个字符串之间的相似度?

C# - 在文本之间取一个字符串

如何在 C# 中获取两个字符串数组之间的差异?

如何仅替换不在 c# 中的两个引号之间的字符串

C# 构建十六进制符号字符串