c# - 从具有前导自定义变量的字符串中获取括号值
问题描述
我想得到一个自定义变量后面括号中的字符串。
例如:
我有这个字符串:“这是一个测试(我想从中获取括号:$variable(HeyGuys))。”
我只想得到 $variable 后面括号中的字符串:“HeyGuys”
我尝试了两种不同的东西,但都得到了相同的结果:
//Input
this.GetBracketValue("I want to get the brackets from this: $variable(HeyGuys)).", "$variable");
//What the output should look like:
"HeyGuys"
//What it looks like with what I tried:
"HeyGuys)"
// Version with regex
public string GetBracketValue(string message, string variable)
{
Regex regex = new Regex("\\" + variable + "\\(.*\\)");
string variable = regex.Match(message).Value;
regex = new Regex("\\(.*\\)");
foreach(Match match in regex.Matches(variable))
{
string result = match.Value.Remove(0, 1);
result = result.Remove(result.Length - 1);
return result;
}
return "";
}
// Version without regex
public string GetBracketValue(string message, string variable)
{
int index = message.IndexOf(variable) + 1;
string substring = "";
if (index > 0)
{
substring = message.Substring(index);
index = substring.IndexOf("(");
if (index > 0)
{
substring = substring.Substring(substring.IndexOf("("));
substring = substring.Remove(0, 1);
}
index = substring.LastIndexOf(")");
if (index > 0)
{
substring = substring.Remove(substring.LastIndexOf(")"));
}
}
return substring;
}
解决方案
尝试以下:
string input = "This is a test (I want to get the brackets from this: $variable(HeyGuys)).";
string pattern = @"\$variable\((?'variable'[^\)]+)";
Match match = Regex.Match(input, pattern);
string variable = match.Groups["variable"].Value;
推荐阅读
- javascript - 使用 iframe 的跨站点域位置不再起作用
- gradle - 在 build.gradle 和 settings.gradle 中定义“存储库”有什么区别?
- c++ - 使用 %zu 是否安全,例如 std::vector<>::size()?
- json - iis 中托管的运行时绑定错误 web api
- node.js - 连接 2 个 libp2p 节点( browser-nodejs 节点)
- python - 从表 selenium python 的第二列中获取所有值
- python - 快照测试错误地通过了不同的内容
- git - 致命: ls-files -i 必须与 -o 或 -c 与 Git 2.32.0 一起使用
- spring-boot - [SpringBoot Caches]:IDE 对带有 @CachePut 注释的编译时错误的分歧
- python - 熊猫数据框 - 总和和计数