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

时间:2011-08-10 16:18:37

标签: javascript jquery string sms

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

但显然这无论如何都不起作用。

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

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

  

在那里,这条消息是237个字符长,这使得它很多   对于单个消息而言,此字符串将被拆分为多个   消息......这实际上是短信应用的原因   我们需要分割字符串。

最终输出应为

  

在那里,这条消息的长度为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条消息,因此末尾附加的字符数量不一致(我们希望将字符数尽可能低地保持为小于10的0填充数不是选项)。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

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

它会切断160 * 15个字符(因为你暗示15是限制)。它将这两个数字设置为变量顶部,这样你就可以摆弄任何一个。

更新

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

这太丑了......但它有效......

  1. 它会确定y中的(x/y)是否会是一位数或两位数。
  2. 它在指标中使用占位符,同时构建实际消息。
  3. 它取代了占位符。
  4. 最后,它分为charLimit
  5. 我希望其他人能够找到一种更清洁的方法......

答案 1 :(得分:1)

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

使用当前代码处理少于十条消息的情况,然后扩展该方法以涵盖最多包含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+')';    
}