From 87a5db74939d2597952761ef6a696cdff47112cf Mon Sep 17 00:00:00 2001 From: Ashley Rodan Date: Sun, 13 Nov 2022 14:13:14 +1100 Subject: [PATCH 1/2] add text formula substitute without occurances --- formulas/functions/text.js | 6 +++++- test/formulas/text/testcase.js | 7 +++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/formulas/functions/text.js b/formulas/functions/text.js index a941e3ac..1c4b5e54 100644 --- a/formulas/functions/text.js +++ b/formulas/functions/text.js @@ -292,8 +292,12 @@ const TextFunctions = { return TextFunctions.SEARCH(...params) }, - SUBSTITUTE: (...params) => { + SUBSTITUTE: (text, search_for, replace_with) => { + text = H.accept(text, [Types.STRING]); + search_for = H.accept(search_for, [Types.STRING]); + replace_with = H.accept(replace_with, [Types.STRING]); + return text.replace(search_for, replace_with); }, T: (value) => { diff --git a/test/formulas/text/testcase.js b/test/formulas/text/testcase.js index 835c8ac2..65012187 100644 --- a/test/formulas/text/testcase.js +++ b/test/formulas/text/testcase.js @@ -140,6 +140,13 @@ module.exports = { 'SEARCH("c\\b", "abcabcac\\bacb", 6)': 8, }, + SUBSTITUTE: { + 'SUBSTITUTE("Welcome xxx","xxx","FFP")': "Welcome FFP", + 'SUBSTITUTE("Welcome FFP"," ","")': "WelcomeFFP", + 'SUBSTITUTE("#%#$%","%#","Hi")': "#Hi$%", + 'SUBSTITUTE("r r r","r","a")': "a r r", + }, + T: { 'T("*_")': "*_", 'T(19)': "", From 24bfa4259c2cd9e5e2fdbd45c2fd22e202f23bbb Mon Sep 17 00:00:00 2001 From: Ashley Rodan Date: Sun, 13 Nov 2022 14:20:00 +1100 Subject: [PATCH 2/2] add SUBSTITUTE to readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e2aec4bd..1910fe9f 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ COVARIANCE.S, CSC, CSCH, DATE, DATEDIF, DATEVALUE, DAY, DAYS, DAYS360, DBCS, DEC FISHER, FISHERINV, FIXED, FLOOR, FLOOR.MATH, FLOOR.PRECISE, FORECAST, FORECAST.LINEAR, FREQUENCY, GAMMA, GAMMA.DIST, GAMMA.INV, GAMMALN, GAMMALN.PRECISE, GAUSS, GCD, GEOMEAN, GESTEP, GROWTH, HARMEAN, HEX2BIN, HEX2DEC, HEX2OCT, HLOOKUP, HOUR, HYPGEOM.DIST, IF, IFERROR, IFNA, IFS, IMABS, IMAGINARY, IMARGUMENT, IMCONJUGATE, IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMDIV, IMEXP, IMLN, IMLOG10, IMLOG2, IMPOWER, IMPRODUCT, IMREAL, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN, INDEX, INT, INTERCEPT, ISBLANK, ISERR, ISERROR, ISEVEN, ISLOGICAL, ISNA, ISNONTEXT, ISNUMBER, ISO.CEILING, ISOWEEKNUM, ISREF, ISTEXT, KURT, LCM, LEFT, LEFTB, LN, LOG, LOG10, LOGNORM.DIST, LOGNORM.INV, LOWER, MDETERM, MID, MIDB, MINUTE, MMULT, MOD, MONTH, MROUND, MULTINOMIAL, MUNIT, N, NA, NEGBINOM.DIST, NETWORKDAYS, NETWORKDAYS.INTL, NORM.DIST, NORM.INV, NORM.S.DIST, NORM.S.INV, NOT, NOW, NUMBERVALUE, OCT2BIN, OCT2DEC, OCT2HEX, ODD, OR, -PHI, PI, POISSON.DIST, POWER, PRODUCT, PROPER, QUOTIENT, RADIANS, RAND, RANDBETWEEN, REPLACE, REPLACEB, REPT, RIGHT, RIGHTB, ROMAN, ROUND, ROUNDDOWN, ROUNDUP, ROW, ROWS, SEARCH, SEARCHB, SEC, SECH, SECOND, SERIESSUM, SIGN, SIN, SINH, SQRT, SQRTPI, STANDARDIZE, SUM, SUMIF, SUMPRODUCT, SUMSQ, SUMX2MY2, +PHI, PI, POISSON.DIST, POWER, PRODUCT, PROPER, QUOTIENT, RADIANS, RAND, RANDBETWEEN, REPLACE, REPLACEB, REPT, RIGHT, RIGHTB, ROMAN, ROUND, ROUNDDOWN, ROUNDUP, ROW, ROWS, SEARCH, SEARCHB, SEC, SECH, SECOND, SERIESSUM, SIGN, SIN, SINH, SQRT, SQRTPI, STANDARDIZE, SUBSTITUTE, SUM, SUMIF, SUMPRODUCT, SUMSQ, SUMX2MY2, SUMX2PY2, SUMXMY2, T, T.DIST, T.DIST.2T, T.DIST.RT, T.INV, T.INV.2T, TAN, TANH, TEXT, TIME, TIMEVALUE, TODAY, TRANSPOSE, TRIM, TRUE, TRUNC, TYPE, UNICHAR, UNICODE, UPPER, VLOOKUP, WEBSERVICE, WEEKDAY, WEEKNUM, WEIBULL.DIST, WORKDAY, WORKDAY.INTL, XOR, YEAR, YEARFRAC ``` ### Size: 291KB Minified, 81KB Gzipped+Minified