如何在 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(" ")方法,它將透過分割每個單詞來返回字串。
<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 個大小的塊。
<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("")方法,字串將按每個字元進行分割。空格也將作為單個字元進行計數。
<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,這將返回輸入字串中的三個單詞。
<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 個單詞。
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 方法並提供了分割字串的大小。此方法還將計算字元之間的空格。
<!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>