数组字符串中的反向字匹配Javascript中的标点符号

时间:2015-04-21 06:03:58

标签: javascript string

如何反转此字符串中的单词,包括标点符号?

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."

4 个答案:

答案 0 :(得分:4)

你可以反转每个单词而不是整个字符串,但是你必须保持空格,句号等分开,所以需要一个单词边界

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 :(得分:1)

简单地反转弦不会给出解决方案。

  1. 得到每个字。
  2. 反转它
  3. 再次加入
  4. 
    
    var str = "This is fun, hopefully.";
    alert(str.split("").reverse().join("").split(" ").reverse().join(" "));
    
    
    

答案 2 :(得分:0)

您可以想象您收到了一系列字母,并且必须基于一些分隔符(例如:空格,逗号,破折号等)来构造单词。

在读取每个字符时,您会不断反向构造单词。

当您击中任何分隔符时,您便会说完这个单词。

现在,您只需将其添加到结果中并附加分隔符(这样,分隔符就不会放在单词的开头,而是放在结尾)。

这里是一个例子:

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;
}

答案 3 :(得分:-1)

您可以按顺序反转字符串中的每个单词,方法是将该单词拆分为单词数组,然后反转每个单词并将其存储在一个新数组中,然后按如下所示加入该数组。

//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);