Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果两个平铺字符之间的字符计数大于60,则在两个平铺字符之间添加平铺_Javascript_Function - Fatal编程技术网

Javascript 如果两个平铺字符之间的字符计数大于60,则在两个平铺字符之间添加平铺

Javascript 如果两个平铺字符之间的字符计数大于60,则在两个平铺字符之间添加平铺,javascript,function,Javascript,Function,我有一个文本字符串,我想在javascript中每隔60个字符通过波浪(~)分割 我有 UXXXXXXXXX PXXXXXTXXXXXXXXXXXXXT ID:~XXXTEST COPYXXX~XXXGXXXSTROSXXX复印件RXXXPORTXXXX~NXXXXXXXXX:XXXDELTAXXX,DXXXXXXsy~CXXXXXXX XXXotXXX XXXo:XXX999XXX~45678:XXXXXX~DXXXXXTXXX-XXXXXX RTXXX:XXX18\12\1968XX~AXX

我有一个文本字符串,我想在javascript中每隔60个字符通过波浪(~)分割

我有

UXXXXXXXXX PXXXXXTXXXXXXXXXXXXXT ID:~XXXTEST COPYXXX~XXXGXXXSTROSXXX复印件RXXXPORTXXXX~NXXXXXXXXX:XXXDELTAXXX,DXXXXXXsy~CXXXXXXX XXXotXXX XXXo:XXX999XXX~45678:XXXXXX~DXXXXXTXXX-XXXXXX RTXXX:XXX18\12\1968XX~AXXXXXXRXSS:TXXXXXXX-TXXXXXXX:TXXXXXXXXXXX-NXXW-STRXXXXXX,TXXXXXXX-ArXXXXXX,CXXXXXXX。CZZL~ZZ:测试,TXXXXXX GRXXXXXX SuttoXXX MXXXXXX.Ctr。(xxxxxxx-uxxx),txxxx-grxxxxxxx-SuttoXXX-MXXXXXX.Ctr.,OXXXXXX-cxxxxxxxstxxx-RoXXXXXX,grxxxxxxx-SuttoXXX,exxxxxxxxxxxxxxxxx-xrxxx端口,ZZZ-ZPB~xxxxxxxxxxxxxxxxxxx-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX (gpower)~xxxxxxsuxxxxxxxxxxxxxxxxx\exxxxxxoxxxxst:XXX-xxxxxxxxxxxxx-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXX-XXXxxxOxxXxxxxxxxxxxxxxxxx suxxxxxxssxxxuxxxxxxx到D2。 ~xxxxxxxxxxxxxxxxxosxxxs:XXX~xxxtxxxxxxxxrxxxxxxxxxxutxxxxxx proxxxxxxxxxxxxurxxx:XXX~xxxspxxxxxxxxxxxxxxxxxxxxxxxxxxx:XXX~xxxmxxxxxxxxxxxxxxxxxxxxx操作:XXX~XXX以下:XXX~XXXAdvice\comments:XXX~

字符串有许多平铺区域,这很好,很高兴保留它们。但在某些情况下,如果波浪号之间的字符数大于60,我希望通过在第60个字符点添加另一个波浪号来拆分该部分(波浪号到波浪号)。然后重新开始,到下一个瓷砖

基本上,每个瓷砖之间不应超过60个字符,任何少于此字符都可以

最后,我尝试了许多功能

function addtilde(str) {
  var result = '';
  while (str.length > 0) {
    result += str.substring(0, 60) + "~";
    str = str.substring(60);
  }
  return result;
}

没有乐趣,任何想法都会被欣赏。

这里有一个有趣的小递归解决方案。In在字符串上使用方便的
.indexOf
方法,该方法采用第二个参数,指示字符串搜索的起始索引

尚未测试,但应能正常工作。:)

通过调用启动递归

var res = splitItUp("my string", 0);

然后返回结果。

对该字符串使用
replace
。它是一个查找“无瓷砖,最多60次,可选后跟瓷砖”的单行程序,并返回非瓷砖部分加上瓷砖

str = str.replace ("([^\~]{1,60})\~?",
    function (fullmatch, partmatch) { return partmatch+'~'; }, "g");

递归执行非常有趣(ES6语法简洁):


您可以匹配一个正则表达式,其中它匹配从1到n的任意数量的字符,在本例中为60。然后用同样的标记重新加入它

str = "UXXXXXXquXXX pXXXtXXXXXXXXXt ID: ~XXXTEST COPYXXX~XXXGXXXstrosXXXopy RXXXportXXX~NXXXXXXXXX: XXXDELTAXXX,DXXXXXXsy~CXXXsXXX XXXotXXX XXXo: XXX999999999XXX~45678: XXXXXX~DXXXtXXX oXXX XXXXXXrtXXX: XXX18\12\1968XXX~AXXXXXXrXXXss: TXXXXXX NXXXw StrXXXXXXt, TXXXXXX ArXXXXXX, CXXXXXXstXXXr, . CZZZL~ZZ: TEST, TXXXXXX GrXXXXXXt SuttoXXX MXXXXXX.Ctr. (XXXXXXuXXX), TXXXXXX GrXXXXXXt SuttoXXX MXXXXXX.Ctr., OXXXXXX CXXXXXXstXXXr RoXXXXXX, GrXXXXXXt SuttoXXX, EXXXXXXXXXsXXXXXXrXXX Port, ZZZ ZPB~XXXProXXXXXXXXXurXXX XXXXXXtXXX:XXX 29\03\2016~XXXStXXXtus:XXX ~XXXWXXXrXXX:XXX (XXXoXXXXXX)~XXXBUILDINGXXXtXXXXXX:XXX CouXXXtXXXss oXXX CXXXXXXstXXXr~XXXRXXXXXXXXXrrXXXXXXXXX XXXoXXXsuXXXtXXXXXXt:XXX ZZ (GPwer)~XXXCoXXXsuXXXtXXXXXXt\EXXXXXXosXXXopXXXst:XXX LXXXst XXXoXXXsuXXXtXXXXXXt:XXX EXXXXXXosXXXopXXXst No1: Mr ZZZ vXXXXXXs HelloXXXs: NXXXXXXoXXXXXX AsXXX StXXXXXXXXXXXX BXXXzXXXXXXt~XXXIXXXstruXXXXXXXXXt:XXX 11 GIF1T240 2130131~XXXPrXXXXXXXXXXXXXXXXXXXXXtXXXoXXX:XXX ~XXXIXXXXXXXXXXXXXXXtXXXoXXXs:XXX ~XXXRXXXport:XXX TXXXXXX proXXXXXXXXXurXXX wXXXs XXXoXXXpXXXXXXtXXXXXX suXXXXXXXXXssXXXuXXXXXXy to D2. ~XXXDXXXXXXXXXXXXosXXXs:XXX ~XXXTXXXXXXrXXXpXXXutXXXXXX proXXXXXXXXXurXXXs:XXX ~XXXSpXXXXXXXXXXXXXXXXXXs TXXXXXXXXXXXX:XXX ~XXXMXXXXXXXXXXXXXXXtion:XXX ~XXXFollow up:XXX ~XXXAdvice\comments:XXX ~"
console.log(str.match(/[^~]{1,60}/g).join('~'));
var splitRun = txt => txt.length <= 60 
                       ? txt 
                       : (txt.substring(0,60) + "~" + splitRun(txt.substring(60)));
var runs = originalText.split("~");
var treatedText = runs.map(splitRun).join("~");
var splitRun = function(txt){
    return txt.length <= 60 
            ? txt 
            : (txt.substring(0,60) + "~" + splitRun(txt.substring(60)));
}
str = "UXXXXXXquXXX pXXXtXXXXXXXXXt ID: ~XXXTEST COPYXXX~XXXGXXXstrosXXXopy RXXXportXXX~NXXXXXXXXX: XXXDELTAXXX,DXXXXXXsy~CXXXsXXX XXXotXXX XXXo: XXX999999999XXX~45678: XXXXXX~DXXXtXXX oXXX XXXXXXrtXXX: XXX18\12\1968XXX~AXXXXXXrXXXss: TXXXXXX NXXXw StrXXXXXXt, TXXXXXX ArXXXXXX, CXXXXXXstXXXr, . CZZZL~ZZ: TEST, TXXXXXX GrXXXXXXt SuttoXXX MXXXXXX.Ctr. (XXXXXXuXXX), TXXXXXX GrXXXXXXt SuttoXXX MXXXXXX.Ctr., OXXXXXX CXXXXXXstXXXr RoXXXXXX, GrXXXXXXt SuttoXXX, EXXXXXXXXXsXXXXXXrXXX Port, ZZZ ZPB~XXXProXXXXXXXXXurXXX XXXXXXtXXX:XXX 29\03\2016~XXXStXXXtus:XXX ~XXXWXXXrXXX:XXX (XXXoXXXXXX)~XXXBUILDINGXXXtXXXXXX:XXX CouXXXtXXXss oXXX CXXXXXXstXXXr~XXXRXXXXXXXXXrrXXXXXXXXX XXXoXXXsuXXXtXXXXXXt:XXX ZZ (GPwer)~XXXCoXXXsuXXXtXXXXXXt\EXXXXXXosXXXopXXXst:XXX LXXXst XXXoXXXsuXXXtXXXXXXt:XXX EXXXXXXosXXXopXXXst No1: Mr ZZZ vXXXXXXs HelloXXXs: NXXXXXXoXXXXXX AsXXX StXXXXXXXXXXXX BXXXzXXXXXXt~XXXIXXXstruXXXXXXXXXt:XXX 11 GIF1T240 2130131~XXXPrXXXXXXXXXXXXXXXXXXXXXtXXXoXXX:XXX ~XXXIXXXXXXXXXXXXXXXtXXXoXXXs:XXX ~XXXRXXXport:XXX TXXXXXX proXXXXXXXXXurXXX wXXXs XXXoXXXpXXXXXXtXXXXXX suXXXXXXXXXssXXXuXXXXXXy to D2. ~XXXDXXXXXXXXXXXXosXXXs:XXX ~XXXTXXXXXXrXXXpXXXutXXXXXX proXXXXXXXXXurXXXs:XXX ~XXXSpXXXXXXXXXXXXXXXXXXs TXXXXXXXXXXXX:XXX ~XXXMXXXXXXXXXXXXXXXtion:XXX ~XXXFollow up:XXX ~XXXAdvice\comments:XXX ~"
console.log(str.match(/[^~]{1,60}/g).join('~'));