gpt4 book ai didi

c# - 快速字符串替换为通配符

转载 作者:行者123 更新时间:2023-11-30 16:32:23 24 4
gpt4 key购买 nike

将旧程序转换为 ASP.NET c# 站点。

我有一个充满函数的表格和一个充满变量及其相应值的表格。我已经编写了一个函数来评估答案,但需要格式化公式才能将变量传入。

例如:

V(totalValue) * V(CoFriction(s)) ==>  V("totalValue") * V("CoFriction(s)")

如何替换 V(<variable>)V("<variable>") .嵌套括号是可能的!

我试过正则表达式 - V\([^\(\)]+\)只会在嵌套的paren上失败。

最佳答案

您可以使用平衡组在 .net 中实现它:

string s = "V(totalValue) * V(CoFriction(s)) * V(a(()b)c()d((())))";

string vPattern =
@"V\(
( #capturing group, for $1 to work
(?:
(?<open>\()| #push to stack OR
(?<-open>\))| #pop from stack OR
[^()] #match anything else
)+?
)
(?(open)(?!)) #assert there are not extra (
\)";

s = Regex.Replace(s, vPattern, "V(\"$1\")", RegexOptions.IgnorePatternWhitespace);

正则表达式完全适用于已发布的场景 - 如果输入无效,它会失败得很惨,所以你假设它是(特别是,当你有额外的右括号时)。

关于c# - 快速字符串替换为通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com