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 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)': "",