javascript - 如何就地反转字符串中的所有单词也会反转这些单词在字符串中的位置,同时将标点符号保留在原来的位置

标签 javascript arrays regex string reverse

如果标题不清楚,举个例子: 输入:

'hello  howis.going'

预期输出:

'ginog  siwoh.olleh'.

可以用正则表达式编程吗?

下面是我的代码,

function fn(str) {
  return str.replace(/[^\s.]+/g, function(m) {
    return m.split('').reverse().join('');
  });
 }

 var res = fn('hello  howis.going')
 console.log('result = ', res);

这是我现在的输出:

olleh  siwoh.gniog

最佳答案

您可以做的是创建一个包含字符串中所有单词的数组,反转数组,然后开始用反转数组中的单词替换字符串中的每个单词。

这是一个例子:

function process(s){
  let arr = s.replace(/\W+$/, "").split(/\W+/).reverse();
  let index = 0;
  return s.replace(/\w+/g, function(){
    return arr[index++].split("").reverse().join("");
  });
}

console.log(process("hello  howis.going"));

编辑:添加了 .replace(/\W+$/, "") 以防止在字符串包含非单词字符的情况下数组末尾出现空字符串元素结束。

关于javascript - 如何就地反转字符串中的所有单词也会反转这些单词在字符串中的位置,同时将标点符号保留在原来的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49484016/

相关文章:

javascript - Cleditor - 小插件错误

javascript - Chrome 失去了控制台?

javascript - 如何从警报中删除此消息?

android - Parse.com 检索整个数组 android

python - 如何从列表列表中删除符合特定条件的所有元素?

javascript - 是否可以在浏览器调试控制台中打印出一些内容,以便在单击时调用一个函数?

javascript - 简洁的javascript获取特定键的所有唯一值

javascript - 交叉监听多个事件并触发回调

ruby - Sinatra 路由的必需和可选参数

python - 使用前瞻进行正则表达式分组(在 Python 中)