如何在 JavaScript 中将长字符串分割成 n 个大小的块?


字符串是由一个或多个字符组成的序列,其中包含数字、字母、符号或特殊字符。在 JavaScript 中,字符串是不可变的。也就是说,一旦创建了一个字符串,就不能更改其值。

例如,考虑以下代码片段,我们在这里创建了一个字符串变量并为其分配了一个值(Tutorialspoint)。在下一条语句中,我们尝试更改字符串第一个索引处的字符。然后我们显示字符串的内容。

let x = 'Tutorialspoint';  
x[0] = 't';  
console.log(x); //Tutorialspoint.

执行此代码将显示字符串“Tutorialspoint”,即原始字符串的值没有改变。

但是,您可以为现有字符串分配新值 -

let y = 'Tutorialspoint';  
y = 'tutorialspoint';  
cosole.log(y); //tutorialspoint.

将长字符串分割成块

我们需要将一个字符串分割成 n 个大小的块,这意味着我们需要将一个长字符串分割成 n 个大小的子字符串。

例如,考虑字符串“helloworld”,如果 n 的值为 2,则输出将为“he”、“ll”、“ow”、“or”、“ld”。

让我们看看一些输入和输出场景 -

让我们考虑一个场景,我们有一个字符串,并且我们正在将字符串以 2 个字符的长度进行分割。

Input = 'Tutorialspoint' 
Output = 'Tu', 'to', 'ri', 'al', 'sp', 'oi', 'nt' 

让我们假设另一种场景,输入字符串中字符之间的空格在某些情况下也将被计算在内。

Input = 'Hello my movie is RRR' 
Output = 'He', 'll', 'o ', 'my', ' m', 'ov', 'ie', ' i', 's ', 'RR', 'R' 

在 JavaScript 中,我们有很多方法可以将长字符串分割成 n 个大小的块。让我们看看下面的示例。

split() 方法

JavaScript 中的split()方法将字符串分割成一个(子)字符串数组。此方法将在一个新数组中返回输出,并且不会修改原始字符串。

分割单词

在下面的示例中,我们有一个包含一些字符的输入字符串。我们执行了split(" ")方法,它将通过分割每个单词来返回字符串。

Open Compiler
<html> <body> <button onClick = "split()"> Click </button> <h4 id = "output"></h4> <script> function split() { var string = "Hello my name is hrithik roshan"; const newArray = string.split(" "); document.getElementById("output").innerHTML = newArray; }; </script> </body> </html>

正如我们在上面输出中看到的,字符串被分割成了各个单词。

N 个块的单词

现在,下面的程序将给定的输入字符串分割成 n 个大小的块。

Open Compiler
<html> <body> <script> var v = []; var str = "Hello my name is hrithik roshan" var t = str.split(""); for (var i = 0; i < t.length; i++) { if ((i % 3) == 2) { v.push(t[i - 2].concat(t[i - 1], t[i])); } } document.write(v); </script> </body> </html>

示例 2

分割字符,包括空格

在下面的示例中,我们有一个包含字符的输入字符串。通过使用split("")方法,字符串将按每个字符进行分割。空格也将作为单个字符进行计数。

Open Compiler
<html> <body> <button onClick = "split()">Click</button> <h4 id = "output"></h4> <script> function split() { var string = "Hello my name is Allu Arjun"; const newArray = string.split(""); document.getElementById("output").innerHTML = newArray; }; </script> </body> </html>

在输出中,字符串被分割成了各个字符。

示例 3

使用 limit 参数分割

在下面的示例中,我们有一个包含一些字符的输入字符串。我们执行了包含 limit 参数的分割操作。由于我们在 limit 参数中输入了 3,这将返回输入字符串中的三个单词。

Open Compiler
<html> <body> <button onClick = "split()"> Click</button> <h4 id = "output"></h4> <script> function split() { var string = "Winner is Neeraj chopra"; const newArray = string.split(" ", 3); document.getElementById("output").innerHTML = newArray; }; </script> </body> </html>

由于我们在 split() 方法中传递了 3,因此字符串将被分割成 3 个单词。

Learn JavaScript in-depth with real-world projects through our JavaScript certification course. Enroll and become a certified expert to boost your career.

Regex() 方法

要使用正则表达式分割字符串,regex 方法有一个参数用于包含要分割给定输入字符串的大小。

语法

如果我们想获取任何字符串的极端 n 个大小的子字符串,则语法如下:

str.match(/.{1,n}/g); // Enter size of substring in 'n'

如果字符串包含换行符或回车符,则语法如下:

str.match(/(.|[\r
]){1,n}/g); // Enter size of substring in 'n'

示例

在下面的示例中,我们检查了输入字符串是否为空。如果输入字符串大于 0,我们执行了 regex 方法并提供了分割字符串的大小。此方法还将计算字符之间的空格。

Open Compiler
<!DOCTYPE html> <html> <head> <button onClick = "regex()">Click me! </button> <p id = "para"> </p> <p id = "para1"> </p> <p id = "para2"> </p> <script> function regex(){ stringsplit = function(str, size) { while (str == null) return []; str = String(str); return size > 0 ? str.match(new RegExp('.{1,' + size + '}', 'g')) : [str]; } document.getElementById("para").innerHTML = stringsplit('You are in Hyderabad') + "<br>"; document.getElementById("para1").innerHTML = stringsplit('Jaipur is a pink city',3) + "<br>"; document.getElementById("para2").innerHTML = stringsplit('Vizag is city of destiny',4); }; </script> </head> </html>

更新于:2022-09-23

3K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告