簡體   English   中英

如何每2個字符拆分字符串

[英]how to split string every 2 character

var alphabet = "FIN SLHOJVHEN GYKOHU";

我想每 2 個字符拆分一次,以便打印“我愛你”

我已經試過了,但沒用

for (var i = 0 ; i \< alphabet.length ; i+=2 ){
alphabet.split(i)

請糾正我

您可以將字符串轉換為數組,對其進行過濾並再次使其成為字符串。

let alphabet = "FIN SLHOJVHEN GYKOHU";
alphabet = [...alphabet].filter((_, i) => i%2).join("");
console.log(alphabet); //I LOVE YOU;

這也是I LOVE YOU的結果( regex101 演示)。

 // the string let alphabet = 'FIN SLHOJVHEN GYKOHU'; // capture ^ start or chr, match latter chr alphabet = alphabet.replace(/(^|.)./g, '$1'); console.log(alphabet);

由於split function 將按您傳遞的定界符拆分給定的字符串,在我看來,您希望首先拆分編碼字符串中包含的單詞(使用空格),然后僅將偶數位置的字符包含在解碼后的字符串。

這是一個實現以下目標的演示:

 const encoded = "FIN SLHOJVHEN GYKOHU"; const words = encoded.split(' '); let decoded = ''; words.forEach((word)=>{ for (let i=1;i<word.length;i+=2){ decoded += word[i]; } decoded += ' '; }); console.log(decoded);

我們可以嘗試使用正則表達式替換方法:

 var alphabet = "FIN SLHOJVHEN GYKOHU"; var output = alphabet.replace(/[AZ]([AZ]|(?=\s))/g, "$1"); console.log(output);

這是正則表達式模式的解釋:

  • [AZ]匹配單個(奇數)大寫字母
  • (開啟捕獲
    • [AZ]大寫字母
    • | 或者
    • (?=\s)向前看並找到一個空間
  • )

換句話說,我們匹配一個奇數字母然后捕獲下一個字母,除非那個奇數字母恰好是單詞中的最后一個。 然后,如果可用的話,我們只用捕獲的偶數字母替換。

你已經有不同的方法來做到這一點,我正在添加一個,所以你會完全困惑! 呵呵

這是遞歸的:

  • 我們拿你的字符串字母表
  • 前 2 個字母(每 2 個)
  • 這 2 個字符串中的最后一個存儲在 toPrint 變量中
  • 從字母表中刪除前 2 個字符

...循環直到字母為空

你的 toPrint 有我愛你

當然不是最快的,但很好。

 let alphabet = "FIN SLHOJVHEN GYKOHU"; let toPrint = ''; do { let temp = alphabet.slice(0, 2); toPrint += temp[1]; alphabet = alphabet.slice(2, alphabet.length); } while (alphabet;== ''). console;log(toPrint);

您可以根據需要每隔一個字符從 1 開始循環,並注意\<應該是<

在循環中, i是字符的 position,因此您仍然需要獲取該 position 的字符,然后組裝生成的字符串。

 var alphabet = "FIN SLHOJVHEN GYKOHU"; var result = ""; for (var i = 1; i < alphabet.length; i += 2) { result += alphabet[i]; } console.log(result);

如果您想考慮空格並且只獲得第二個非空白字符,您可能會:

  • 通過拆分空白字符來獲取單獨的單詞
  • 刪除空條目
  • 將每隔一個字符連接到一個字符串
  • 用空格連接初始拆分的部分

 const alphabet = " FIN SLHOJVHEN GYKOHU "; const result = alphabet.split(/\s+/).filter(Boolean).map(s => s.split("").filter((s, i) => i % 2).join("")).join(" "); console.log(result);

如果您的瀏覽器支持正則表達式的正后視:

 const alphabet = " FIN SLHOJVHEN GYKOHU "; const result = alphabet.split(/\s+/).filter(Boolean).map(s => s.match(/(?<=^(?:..)*.)./g).join("")).join(" "); console.log(result);

var alphabet = "FIN SLHOJVHEN GYKOHU";
const arrayAlpha = alphabet.split('');
let stringToPrint = '';
for(let i=1; i<arrayAlpha.length; i+=2){
stringToPrint = stringToPrint + arrayAlpha[i]
}

console.log(stringToPrint)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM