Skip to content

Commit 786cf3c

Browse files
author
linzhijun
committed
fix
1 parent 5044a95 commit 786cf3c

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

csharp/ToolGood.Algorithm/Internals/Functions/FunctionBase.csharp.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -706,22 +706,22 @@ public override void ToString(StringBuilder stringBuilder, bool addBrackets)
706706
}
707707
}
708708

709-
internal class Function_SUBSTRING : Function_N
709+
internal class Function_SUBSTRING : Function_3
710710
{
711-
public Function_SUBSTRING(FunctionBase[] funcs) : base(funcs)
711+
public Function_SUBSTRING(FunctionBase func1, FunctionBase func2, FunctionBase func3) : base(func1, func2, func3)
712712
{
713713
}
714714

715715
public override Operand Calculate(AlgorithmEngine work)
716716
{
717-
var args1 = funcs[0].Calculate(work); if (args1.Type != OperandType.TEXT) { args1 = args1.ToText("Function '{0}' parameter {1} is error!", "Substring", 1); if (args1.IsError) { return args1; } }
718-
var args2 = funcs[1].Calculate(work); if (args2.Type != OperandType.NUMBER) { args2 = args2.ToNumber("Function '{0}' parameter {1} is error!", "Substring", 2); if (args2.IsError) { return args2; } }
717+
var args1 = func1.Calculate(work); if (args1.Type != OperandType.TEXT) { args1 = args1.ToText("Function '{0}' parameter {1} is error!", "Substring", 1); if (args1.IsError) { return args1; } }
718+
var args2 = func2.Calculate(work); if (args2.Type != OperandType.NUMBER) { args2 = args2.ToNumber("Function '{0}' parameter {1} is error!", "Substring", 2); if (args2.IsError) { return args2; } }
719719

720720
var text = args1.TextValue;
721-
if (funcs.Length == 2) {
721+
if (func3 == null) {
722722
return Operand.Create(text.AsSpan(args2.IntValue - work.ExcelIndex).ToString());
723723
}
724-
var args3 = funcs[2].Calculate(work); if (args3.Type != OperandType.NUMBER) { args3 = args3.ToNumber("Function '{0}' parameter {1} is error!", "Substring", 3); if (args3.IsError) { return args3; } }
724+
var args3 = func3.Calculate(work); if (args3.Type != OperandType.NUMBER) { args3 = args3.ToNumber("Function '{0}' parameter {1} is error!", "Substring", 3); if (args3.IsError) { return args3; } }
725725
return Operand.Create(text.AsSpan(args2.IntValue - work.ExcelIndex, args3.IntValue).ToString());
726726
}
727727
public override void ToString(StringBuilder stringBuilder, bool addBrackets)

csharp/ToolGood.Algorithm/Internals/MathFunctionVisitor.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1811,11 +1811,11 @@ public FunctionBase VisitJOIN_fun(mathParser.JOIN_funContext context)
18111811
public FunctionBase VisitSUBSTRING_fun(mathParser.SUBSTRING_funContext context)
18121812
{
18131813
var exprs = context.expr();
1814-
FunctionBase[] args = new FunctionBase[exprs.Length];
1815-
for (int i = 0; i < exprs.Length; i++) {
1816-
args[i] = exprs[i].Accept(this);
1817-
}
1818-
return new Function_SUBSTRING(args);
1814+
var args1 = exprs[0].Accept(this);
1815+
var args2 = exprs[1].Accept(this);
1816+
if (exprs.Length == 2) return new Function_SUBSTRING(args1, args2, null);
1817+
var args3 = exprs[2].Accept(this);
1818+
return new Function_SUBSTRING(args1, args2, args3);
18191819
}
18201820

18211821
public FunctionBase VisitSTARTSWITH_fun(mathParser.STARTSWITH_funContext context)

0 commit comments

Comments
 (0)