繁体   English   中英

Javascript 将字符串拆分为 160 个字符并添加计数器?

[英]Javascript split string at 160 characters and add counter?

我希望将一个字符串拆分为 160 个字符的多个字符串,我认为这很容易var splits = myString.split(160);

但显然这无论如何都行不通。

另一点是我想添加一个计数器(android sms 样式)。

所以假设我们有这个示例字符串(237 个字符)

您好,这条消息有 237 个字符长,这对于一条消息来说很长,这个字符串将被拆分为多条消息……这实际上是针对一个短信应用程序,因此我们需要拆分字符串。

最终的 output 应该是

您好,这条消息有 237 个字符长,这使得一条消息很长,这个字符串将被分成多条消息...... thi(1/2)


s 字符串将被拆分为多条消息...这实际上是针对短信应用程序的,因此我们需要拆分字符串。(2/2)

现在,如果总是有 9 条或更少的消息,我可以这样做

//ok, so the next line won't work, but it gets the point across...
var splits = mystring.split(155);
var s = splits.length;
for(var i = 0; i < s; i++)
  splits[i] += '('+(i+1)+'/'+s+')';

但问题是任何地方最多可能有 15 条消息,因此最后附加的字符数量不一致(我们希望将字符计数保持在尽可能低的 0 填充数小于 10 不是一个选项)。

我怎样才能做到这一点?

http://jsfiddle.net/Lobstrosity/nwaYe/

它将在 160 * 15 个字符处截断(因为您暗示 15 是限制)。 它将这两个数字都设置为变量,因此您可以摆弄其中一个。

更新

新小提琴: http://jsfiddle.net/Lobstroosity/nwaYe/2/

这很丑……但它有效……

  1. 它计算出(x/y)中的y是一位数还是两位数。
  2. 它在构建实际消息时在指标中使用占位符。
  3. 它替换占位符。
  4. 最后,它在charLimit上分裂。

我希望其他人能找到一种更清洁的方法来做到这一点......

我认为获得最佳消息(即最大长度)的最佳选择可能是分别处理最大消息长度的每个 class。

使用当前代码处理少于 10 条消息的情况,然后扩展该方法以涵盖最多 99 条消息的情况。 如果有可能超过 100 条消息,那么您可以进一步扩展,但这听起来不太可能。

这是一个代码示例:

if (mystring.length < (155 * 9)) {
    var splits = mystring.split(155);
    var s = splits.length;
    for(var i = 0; i < s; i++)
        splits[i] += '('+(i+1)+'/'+s+')';
} else if (mystring.length < (154*9)+(153 * 90)) {
    var splits1 = mystring.substr(0,154*9).split(154);
    var splits2 = mystring.substr(154*9).split(153);
    var splits = [];
    var s = splits1.length + splits2.length;
    for (var i = 0; i < splits1.length; i++)
        splits[i] = splits1[i] + '('+(i+1)+'/'+s+')';
    for (var i = 10; i < splits2.length+10; i++)
        splits[i] = splits2[i-10] + '('+(i+1)+'/'+s+')';    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM