如何将字符串中每行的前n个字符移动到同一行的末尾(而不是字符串的末尾)


字符串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

无需阵列操作

使用regex捕获组的简单String.replacement((似乎提供了最短的解决方案:

string.replace(/(w{4})(w{32})/g, '$2$1');

定义

  1. ()=定义捕获组
  2. w=选择字母数字字符
  3. {n}=占用n个字符
  4. $n=表示序列中未命名捕获组的令牌

"$2$1"通过将第一个捕获组的文本附加到第二个捕获组末尾来创建替换字符串。

有关更多详细信息,请参阅:regex101 Fiddle

代码段

试试代码看看它是如何工作的。你也可以在数字周围加上括号和空格,效果也是一样的。

stdout.value = stdin.value.replace(/(w{4})(w{32})/g, '$2$1');
textarea {
width: 80%;
height: 5rem;
display: block;
margin-bottom: 1rem;
background-color: aliceblue;
}
Input:
<textarea id="stdin">
1234a6b4ba21ba54f6bde411930b0b1ec6df
3124a6b4ba21ba54f6bde411930b0b1ef248
2134a6b4ba21ba54f6bde411900b89f7dcf3
4123a6b4ba21ba54f6bde411920bbf835b60
</textarea>
Output:
<textarea id="stdout"></textarea>

将字符串拆分成行,然后重新加入它们:

const string = `
1234a6b4ba21ba54f6bde411930b0b1ec6df
3124a6b4ba21ba54f6bde411930b0b1ef248
2134a6b4ba21ba54f6bde411900b89f7dcf3
4123a6b4ba21ba54f6bde411920bbf835b60`;
const result = string
.split("n")
.map((line) => line.substring(4) + line.substring(0, 4))
.join("n");

console.log(result);

const str = document.querySelector('div')
// Get the text (from wherever)
.textContent
// Split on the line-break
.split('n')
// Filter out empty strings
.filter(l => l.length)
// Map over the array that `filter` returns
// and move the characters around
.map(str => `${str.slice(4, -4)}${str.slice(0, 4)}`)
// Join the array up with line breaks
.join('n');
console.log(str);
<div>
1234a6b4ba21ba54f6bde411930b0b1ec6df
3124a6b4ba21ba54f6bde411930b0b1ef248
2134a6b4ba21ba54f6bde411900b89f7dcf3
4123a6b4ba21ba54f6bde411920bbf835b60
</div>

最新更新