[英]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/
这很丑……但它有效……
(x/y)
中的y
是一位数还是两位数。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.