如何在javascript中每n个字符后插入一个字符?

IT技术 javascript string
2021-01-19 06:31:27

我有一个字符串: “敏捷的棕色狐狸跳过懒惰的狗。”

我想使用 JavaScript(可能使用 jQuery)每n 个字符插入一个字符。例如我想打电话:

var s = "The quick brown fox jumps over the lazy dogs.";
var new_s = UpdateString("$",5);
// new_s should equal "The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs.$"

目标是使用此函数将­插入到长字符串中以允许它们换行。

也许有人知道更好的方法?

6个回答

使用正则表达式

"The quick brown fox jumps over the lazy dogs.".replace(/(.{5})/g,"$1$")

The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs.$

干杯,

我到了"string".replace(/.{5}/g, "$&" + "<br>");最后的串联只是为了更容易阅读。$&在替换中匹配匹配的字符串,因此不需要分组。
2021-03-19 06:31:27
该死的!不错的正则表达式。BTW 是$替换字符串中最后一个需要的吗?
2021-03-22 06:31:27
伟大的。一个重要的注意事项是,如果字符串包含换行符,这将在每一行的开头从零开始计数,因为.不匹配\n\r这对于折叠长行纯文本是完美的,但对于 Web 内容可能并不理想。要在匹配中包含换行符,请使用/[\s\S]{5}/g.
2021-03-22 06:31:27
替换字符串中的最后一个$是不需要的,您可以在此处以 5 个空格间隔放置您想要放置的任何内容,例如<br>
2021-03-28 06:31:27
从字符串的末尾开始计数时,这将如何工作?
2021-04-07 06:31:27
function chunk(str, n) {
    var ret = [];
    var i;
    var len;

    for(i = 0, len = str.length; i < len; i += n) {
       ret.push(str.substr(i, n))
    }

    return ret
};

chunk("The quick brown fox jumps over the lazy dogs.", 5).join('$');
// "The q$uick $brown$ fox $jumps$ over$ the $lazy $dogs."
String.split("") & Array.form()
2021-03-23 06:31:27
@Andy E:嘿,在结束之前它们是可选的}我什至没有意识到我已经这样做了。它诞生于 js 压缩器成为标准之前几年的“必须保存每个字节”的心态;)
2021-04-01 06:31:27
正则表达式 & string.split() & array.form() & slice() & map() & JSON.parse()
2021-04-04 06:31:27

把事情简单化

  var str = "123456789";
  var parts = str.match(/.{1,3}/g);
  var new_value = parts.join("-"); //returns 123-456-789
"123-456-789-0".replace(/-([^-]+)$/, '$1'); //删除最后一个破折号
2021-03-26 06:31:27
喜欢这个主意。这也可以即时完成吗(用户仍在打字时)?
2021-04-01 06:31:27
你能分享吗?提前致谢。
2021-04-06 06:31:27
万一我有一个十个字母的数字并且我只想在第 3 个和第 6 个字母之后有“-”怎么办!而不是第 9 个字母。
2021-04-09 06:31:27
@Learner 使用正则表达式删除最后一个“-”。
2021-04-11 06:31:27
let s = 'The quick brown fox jumps over the lazy dogs.';
s.split('').reduce((a, e, i)=> a + e + (i % 5 === 4 ? '$' : ''), '');

说明:split('')把一个字符串变成一个数组。现在我们要将数组转回单个字符串。在这种情况下,Reduce是完美的。Array的reduce函数有3个参数,第一个是累加器,第二个是迭代元素,第三个是索引。由于数组索引是基于 0 的,要在第 5 个之后插入,我们正在查看索引 i%5 === 4。

非常感谢您提供此代码。这是代码,基于您的代码,我使用每 2 个字符为电话号码输入(keyup 事件)添加一个空格:~~~ $(this).val( $(this).val().replace(/ /g,"").split('').reduce((a,e,i) => a + e + (i % 2 === 1 ? ' ': ''),'').trim( ) ); ~~~
2021-03-13 06:31:27
var str="ABCDEFGHIJKLMNOPQR";
function formatStr(str, n) {
   var a = [], start=0;
   while(start<str.length) {
      a.push(str.slice(start, start+n));
      start+=n;
   }
   console.log(a.join(" "));
}
formatStr(str,3);
试着解释你的答案
2021-04-06 06:31:27