diff --git a/src/controllers/dropCell.js b/src/controllers/dropCell.js index 54d888989..66fc509d9 100644 --- a/src/controllers/dropCell.js +++ b/src/controllers/dropCell.js @@ -202,31 +202,20 @@ const luckysheetDropCell = { return isChnNumber; }, isExtendNumber: function(txt){ - let reg = /[0-9]/; - let isExtendNumber; - if(reg.test(txt.substr(txt.length - 1, 1))){ - isExtendNumber = true; - } - else{ - isExtendNumber = false; - } + let reg = /0|([1-9]+[0-9]*)/g; + let isExtendNumber = reg.test(txt); if(isExtendNumber){ - let str = txt.split(""); - str.reverse(); - - let len = 0; - for(let i = 0; i < str.length; i++){ - if(!reg.test(str[i])){ - len = i; - break; - } - } + let match = txt.match(reg); + let matchTxt = match[match.length - 1]; + let matchIndex = txt.lastIndexOf(matchTxt); + let beforeTxt = txt.substr(0, matchIndex); + let afterTxt = txt.substr(matchIndex + matchTxt.length); - return [isExtendNumber, txt.substr(0, txt.length - len), txt.substr(txt.length - len, len)]; + return [isExtendNumber, Number(matchTxt), beforeTxt, afterTxt]; } - else{ - return [isExtendNumber]; + else { + return [isExtendNumber] } }, isChnWeek1: function(txt){ @@ -913,7 +902,8 @@ const luckysheetDropCell = { let arrData = []; let arrIndex = []; let text = ""; - let extendNumberStr = null; + let extendNumberBeforeStr = null; + let extendNumberAfterStr = null; let isSameStr = true; for(let b = b1; b <= b2; b++){ @@ -931,49 +921,60 @@ const luckysheetDropCell = { if(!!data && !!data["v"] && data["f"] == null){ if(!!data["ct"] && data["ct"]["t"] == "n"){ str = "number"; - extendNumberStr = null; + extendNumberBeforeStr = null; + extendNumberAfterStr = null; } else if(!!data["ct"] && data["ct"]["t"] == "d"){ str = "date"; - extendNumberStr = null; + extendNumberBeforeStr = null; + extendNumberAfterStr = null; } else if(_this.isExtendNumber(data["m"])[0]){ str = "extendNumber"; - if(extendNumberStr == null){ + let isExtendNumber = _this.isExtendNumber(data["m"]); + + if(extendNumberBeforeStr == null || extendNumberAfterStr == null){ isSameStr = true; - extendNumberStr = _this.isExtendNumber(data["m"])[1]; + extendNumberBeforeStr = isExtendNumber[2]; + extendNumberAfterStr = isExtendNumber[3]; } - else{ - if(_this.isExtendNumber(data["m"])[1] != extendNumberStr){ + else { + if(isExtendNumber[2] != extendNumberBeforeStr || isExtendNumber[3] != extendNumberAfterStr){ isSameStr = false; - extendNumberStr = _this.isExtendNumber(data["m"])[1]; + extendNumberBeforeStr = isExtendNumber[2]; + extendNumberAfterStr = isExtendNumber[3]; } - else{ + else { isSameStr = true; } } } else if(_this.isChnNumber(data["m"])){ str = "chnNumber"; - extendNumberStr = null; + extendNumberBeforeStr = null; + extendNumberAfterStr = null; } else if(_this.isChnWeek2(data["m"])){ str = "chnWeek2"; - extendNumberStr = null; + extendNumberBeforeStr = null; + extendNumberAfterStr = null; } else if(_this.isChnWeek3(data["m"])){ str = "chnWeek3"; - extendNumberStr = null; + extendNumberBeforeStr = null; + extendNumberAfterStr = null; } else{ str = "other"; - extendNumberStr = null; + extendNumberBeforeStr = null; + extendNumberAfterStr = null; } } else{ str = "other"; - extendNumberStr = null; + extendNumberBeforeStr = null; + extendNumberAfterStr = null; } if(str == "extendNumber"){ @@ -1439,7 +1440,7 @@ const luckysheetDropCell = { applyData = _this.FillSeries(data, len, direction); } else if(dataType == "extendNumber"){ - //扩展数字(一串字符最后面的是数字) + //扩展数字 if(data.length == 1){ let step; if(direction == "down" || direction == "right"){ @@ -1456,7 +1457,7 @@ const luckysheetDropCell = { for(let i = 0; i < data.length; i++){ let txt = data[i]["m"]; - dataNumArr.push(Number(_this.isExtendNumber(txt)[2])); + dataNumArr.push(Number(_this.isExtendNumber(txt)[1])); } if(direction == "up" || direction == "left"){ @@ -2315,30 +2316,22 @@ const luckysheetDropCell = { let _this = this; let applyData = []; + let reg = /0|([1-9]+[0-9]*)/g; for(let i = 1; i <= len; i++){ let index = (i - 1) % data.length; let d = $.extend(true, {}, data[index]); let last = data[data.length - 1]["m"]; - let lastTxt = _this.isExtendNumber(last)[1]; - let lastNum = _this.isExtendNumber(last)[2]; - - if(lastNum==""){ - let num = Math.abs(Number(lastTxt) + step * i); - if(lastTxt.substr(0,1)=="0"){ - if(lastTxt.length>num.toString().length){ - num = "0" + num.toString(); - } - } - d["v"] = num.toString(); - d["m"] = num.toString(); - } - else{ - let num = Math.abs(Number(lastNum) + step * i); - d["v"] = lastTxt + num.toString(); - d["m"] = lastTxt + num.toString(); - } + let match = last.match(reg) + let lastTxt = match[match.length -1]; + + let num = Math.abs(Number(lastTxt) + step * i); + let lastIndex = last.lastIndexOf(lastTxt); + let valueTxt = last.substr(0, lastIndex) + num.toString() + last.substr(lastIndex + lastTxt.length); + + d["v"] = valueTxt; + d["m"] = valueTxt; applyData.push(d); }