From 3f414c760c3ff93199b3b1d7f4489158104079ff Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Wed, 25 May 2022 10:31:07 +0000 Subject: [PATCH] [bug-66087] make DStar functions case insensitive git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1901229 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/ss/formula/functions/DStarRunner.java | 6 ++++-- test-data/spreadsheet/DGet.xls | Bin 55296 -> 55808 bytes 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java b/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java index 295721b4dd..97f20cebc5 100644 --- a/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java +++ b/poi/src/main/java/org/apache/poi/ss/formula/functions/DStarRunner.java @@ -17,6 +17,7 @@ package org.apache.poi.ss.formula.functions; +import java.util.Locale; import java.util.function.Supplier; import org.apache.poi.ss.formula.eval.AreaEval; @@ -30,6 +31,7 @@ import org.apache.poi.ss.formula.eval.StringEval; import org.apache.poi.ss.formula.eval.StringValueEval; import org.apache.poi.ss.formula.eval.ValueEval; import org.apache.poi.ss.util.NumberComparer; +import org.apache.poi.util.LocaleUtil; /** * This class performs a D* calculation. It takes an {@link IDStarAlgorithm} object and @@ -316,7 +318,7 @@ public final class DStarRunner implements Function3Arg { return testNumericCondition(value, operator.equal, stringOrNumber); } else { // It's a string. String valueString = value instanceof BlankEval ? "" : OperandResolver.coerceValueToString(value); - return stringOrNumber.equals(valueString); + return stringOrNumber.equalsIgnoreCase(valueString); } } else { // It's a text starts-with condition. if(conditionString.isEmpty()) { @@ -324,7 +326,7 @@ public final class DStarRunner implements Function3Arg { } else { String valueString = value instanceof BlankEval ? "" : OperandResolver.coerceValueToString(value); - return valueString.startsWith(conditionString); + return valueString.toLowerCase(LocaleUtil.getUserLocale()).startsWith(conditionString.toLowerCase(LocaleUtil.getUserLocale())); } } } else if(condition instanceof NumericValueEval) { diff --git a/test-data/spreadsheet/DGet.xls b/test-data/spreadsheet/DGet.xls index ddec841904954518cd02030a25c9cc94f12ab4d9..bd66d4e8ecc1ffcc1014a887a5fc4b760f0765d1 100644 GIT binary patch delta 13995 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 delta 13486 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