【问题标题】:swapping the first and last letters of every word in a string using javascript使用javascript交换字符串中每个单词的第一个和最后一个字母
【发布时间】:2021-01-23 00:36:14
【问题描述】:

给定一串由空格分隔的单词,编写一个函数来交换每个单词的第一个和最后一个字母。你可以假设每个单词至少包含一个字母,并且字符串总是至少包含一个单词。您还可以假设每个字符串只包含单词和空格,并且没有前导、尾随或重复的空格。

这是我目前所拥有的

function first_last(str1){
 if (str1.length <= 1) {
  return str1;
 }

  mid_char = str1.substring(1, str1.length - 1);
  return (str1.charAt(str1.length - 1)) + mid_char + str1.charAt(0);
 }
 console.log(first_last('Hello there')); //eello therH

【问题讨论】:

  • 你的问题也应该解释你的代码到目前为止做了什么。

标签: javascript swap charat


【解决方案1】:

先将句子拆分为单词,然后交换第一个和最后一个字母

const str = "This is a hello world string";

const result = str.split(" ").map(word => {
  const len = word.length;
  if (len > 1) {
    word = word[len-1] +  word.substring(1, len-1) + word[0];
  }
  return word;
}).join(" ");

console.log(result)

将其分解为难以理解实施的人的陈述

const str = "This is a hello world string";

const arr = str.split(" ");

const swapWords = arr.map(word => {
  const len = word.length;
  if (len > 1) {
    word = word[len - 1] + word.substring(1, len - 1) + word[0];
  }
  return word;
});

const result = swapWords.join(" ");

console.log(result)

【讨论】:

  • 这里的缩进很混乱
  • 家庭作业是“写一个函数……”——所以我会把它打包成一个不会混淆初学者的可调用函数:console.log( swapwords("trial words") );
【解决方案2】:

一个更漂亮的 ES6 示例:

const invertFirstWithLastLetter = string => string.split(" ").map(word => {
    if (word.length === 1) {
        return word;
    };
    word = [...word];
    [word[0], word[word.length - 1]] = [word[word.length - 1], word[0]];
    return word.join("").toString();
}).join(" ");

console.log(invertFirstWithLastLetter("ES6 is not a crime"));

工作原理:

我们在每个空格上拆分字符串,创建一个单词数组。 我们映射数组:

如果单词仅由单个字母/字符组成,我们不需要反转。

如果大于一个字符,我们会spread the array literal, 因此我们将创建另一个(嵌套)数组,我们将反转第一个和最后一个字母。在返回这个(嵌套)数组之前,我们再次加入它(以删除,)并从中返回一个字符串而不是(嵌套)数组。

最后,我们得到了一个包含单词的数组(首尾字母倒置),我们将再次合并,重新创建我们在函数第一行分割的相同空间。

这是最好的方法(最有效的方法)吗? 可能不是。但它可能会教很多很酷的东西。

【讨论】:

    猜你喜欢
    • 2015-12-29
    • 2021-03-07
    • 2013-06-17
    • 1970-01-01
    • 2022-01-13
    • 2016-10-16
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    相关资源
    最近更新 更多