如何反转此字符串中的单词,包括标点符号?
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."
答案 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)
简单地反转弦不会给出解决方案。
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);