You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字符串中每行的前n个字符移至该行末尾而非字符串末尾?

如何将多行字符串的每行前4个字符移至行尾

问题场景

输入的多行字符串fileString示例如下:

1234a6b4ba21ba54f6bde411930b0b1ec6df
3124a6b4ba21ba54f6bde411930b0b1ef248
2134a6b4ba21ba54f6bde411900b89f7dcf3
4123a6b4ba21ba54f6bde411920bbf835b60

期望实现的效果是把每行的前4个字符移到该行末尾,最终结果如下:

a6b4ba21ba54f6bde411930b0b1ec6df1234
a6b4ba21ba54f6bde411930b0b1ef2483124
a6b4ba21ba54f6bde411900b89f7dcf32134
a6b4ba21ba54f6bde411920bbf835b604123

错误尝试

之前用过一段代码,它会把整个字符串的前4个字符移到末尾,达不到逐行处理的效果:

var num = 4
fileString = fileString.substring(num) + fileString.substring(0, num)

这段代码运行后,原字符串会变成:

a6b4ba21ba54f6bde411930b0b1ec6df
3124a6b4ba21ba54f6bde411930b0b1ef248
2134a6b4ba21ba54f6bde411900b89f7dcf3
4123a6b4ba21ba54f6bde411920bbf835b60
1234

正确实现方法

方法一:拆分+逐行处理+拼接

先把多行字符串按换行符拆成单行数组,对每一行单独执行“截取后段+前段”的操作,最后再拼接回字符串:

const num = 4;
fileString = fileString.split('\n')
  .map(line => {
    // 兼容长度不足4的行,直接返回原内容
    return line.length > num ? line.substring(num) + line.substring(0, num) : line;
  })
  .join('\n');

方法二:正则表达式替换

用正则匹配每行开头的4个字符,通过替换逻辑把它们移到行尾:

const num = 4;
// gm标记表示全局匹配所有行,且让^匹配每行开头
fileString = fileString.replace(new RegExp(`^(.{${num}})(.*)`, 'gm'), '$2$1');

内容的提问来源于stack exchange,提问作者user20408329

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 14:25:24