簡體   English   中英

反轉數組字符串中的單詞匹配 Javascript 中的標點符號

[英]Reverse words in array string matching punctuation in Javascript

如何反轉此字符串中的單詞,包括標點符號?

String.prototype.reverse = function () {
    return this.split('').reverse().join('');
}

var str = "This is fun, hopefully.";
str.reverse();

目前我得到這個:

".yllufepoh ,nuf si sihT"

當我想返回這個時:

"sihT si nuf, yllufepoh."

您可以反轉每個單詞而不是整個字符串,但是您必須將空格、句點等分開,因此需要一個單詞邊界

 String.prototype.reverse = function () { return this.split(/\\b/g).map(function(word) { return word.split('').reverse().join(''); }).join(''); } var str = "This is fun, hopefully."; document.body.innerHTML = str.reverse();

請注意,這會將逗號移動一個空格,因為它會在一個邊界中獲取逗號和空格並交換它們。 如果逗號需要保持在同一位置,也可以在空格上拆分,並將正則表達式更改為/(\\b|\\s)/g

簡單地反轉字符串不會給出解決方案。

  1. 得到每一個字。
  2. 反轉它
  3. 再次加入

 var str = "This is fun, hopefully."; alert(str.split("").reverse().join("").split(" ").reverse().join(" "));

你可以想象你收到了一個字母流,你必須根據一些分隔符(如:空格、逗號、破折號等)構造單詞。

在閱讀每個字符時,您一直在反向構造單詞。

當你點擊任何分隔符時,你就完成了這個詞。

現在您只需將它添加到結果中並附加分隔符(這樣分隔符不會放在單詞的開頭,而是放在結尾)。

下面是一個例子:

 const inputString = "HELLO, Welcome to Google's meeting. My name is Jean-Piere... Bye"; console.log('Normal words: ', inputString); const result = reverseWords(inputString); console.log('Words reversed: ', result); function reverseWords(str='', separators=' ,.-') { let result = ''; let word = ''; for (const char of str) { if (separators.includes(char)) { result += word + char; word = ''; } else { word = char + word; } } // Adds last remaining word, if there is no separator at the end. result += word; return result; }

您可以按順序反轉字符串中的每個單詞,方法是將該單詞拆分為一個單詞數組,然后反轉每個單詞並將其存儲在一個新數組中,然后加入該數組,如下所示。

 //1) Reverse words function reverseWords(str) { // Go for it let reversed; let newArray=[]; reversed = str.split(" "); for(var i = 0;i<reversed.length; i++) { newArray.push(reversed[i].split("").reverse().join("")); } return newArray.join(" "); } let reversedString = reverseWords("This is fun, hopefully."); console.log("This is the reversed string : ",reversedString);

暫無
暫無

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

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