我希望将一个字符串拆分为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填充数不是选项)。
我该怎么做?
答案 0 :(得分:3)
http://jsfiddle.net/Lobstrosity/nwaYe/
它会切断160 * 15个字符(因为你暗示15是限制)。它将这两个数字设置为变量顶部,这样你就可以摆弄任何一个。
新小提琴:http://jsfiddle.net/Lobstrosity/nwaYe/2/
这太丑了......但它有效......
y
中的(x/y)
是否会是一位数或两位数。charLimit
。我希望其他人能够找到一种更清洁的方法......
答案 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+')';
}