RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1590119
Accepted
Пнутый Пигас
Пнутый Пигас
Asked:2024-08-09 22:34:41 +0000 UTC2024-08-09 22:34:41 +0000 UTC 2024-08-09 22:34:41 +0000 UTC

如何交换字母?

  • 772

给定一个带有参数 (TEXT) 的函数,每个单词中的第二个字母必须与最后一个字母交换。

我将文本拆分为单词数组,但如何交换字母?

我的代码:

function encryptThis(text) {
  let textSplit = text.split(" ")

  return textSplit.map( el => el.replace(el[1], el.at(-1) ) )
}
javascript
  • 3 3 个回答
  • 42 Views

3 个回答

  • Voted
  1. Алексей Р
    2024-08-09T23:26:25Z2024-08-09T23:26:25Z

    贯穿slice()- 剪下必要的单词片段并按正确的顺序粘合它们

    const encryptThis = text => text.split(" ").map(el => el.slice(0, 1) + el.slice(-1) + el.slice(2, -1) + el.slice(1, 2))
    console.log(encryptThis('Привет как дела'))

    • 2
  2. SwaD
    2024-08-09T22:45:02Z2024-08-09T22:45:02Z

    您可以将每个单词中的第二个字母与最后一个字母交换,如下所示:

    function encryptThis(text) {
      return text.split(" ").map(el => {
        const elArr = el.split(''); // получаем массив букв
        [elArr[1], elArr[elArr.length - 1]] = [elArr[elArr.length - 1],elArr[1]];
        return elArr.join(''); // Получаем строку
      });
    }
    
    console.log(encryptThis('Привет как дела'));

    我们将字符串拆分为一个数组,
    然后我们将每个单词逐个字母拆分为一个数组,
    我们
    将这些字母收集为单词(我们将数组转换为字符串)。

    • 1
  3. Best Answer
    EzioMercer
    2024-08-10T20:09:53Z2024-08-10T20:09:53Z
    1. 将文本分解为单词
    2. 将单词分解为字母
    3. 在每个单词中,我们更改第二个和最后一个元素的位置
    4. 让我们将字母重新组合成单​​词
    5. 将单词组合回文本

    const encryptText = text => {
      const textSplitter = ' ';
      const wordSplitter = '';
    
      const words = text.split(textSplitter);
      
      const enycryptedWords = words.map(word => {
        const lettersOfWord = word.split(wordSplitter);
        const lastIndex = word.length - 1;
    
        const buf = lettersOfWord[1];
        lettersOfWord[1] = lettersOfWord[lastIndex];
        lettersOfWord[lastIndex] = buf;
        
        return lettersOfWord.join(wordSplitter);
      });
      
      const enycryptedText = enycryptedWords.join(textSplitter);
    
      return enycryptedText;
    }
    
    const input = document.querySelector('input');
    const resultContainer = document.querySelector('.result');
    
    input.addEventListener('input', e => {
      resultContainer.textContent = encryptText(e.target.value);
    })
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    
    input,
    .result {
      font-size: 2rem;
    }
    <input type="text" />
    <div class="result"></div>

    本质上,我的解决方案和以前的没有什么不同,只是描述得更详细一些。但在这里我建议一个小小的改进:打破文本加密和文字加密的逻辑。如果您突然需要代码,这将使测试代码变得更容易:

    const encryptWord = word => {
      const wordSplitter = '';
    
      const lettersOfWord = word.split(wordSplitter);
      const lastIndex = word.length - 1;
    
      const buf = lettersOfWord[1];
      lettersOfWord[1] = lettersOfWord[lastIndex];
      lettersOfWord[lastIndex] = buf;
    
      return lettersOfWord.join(wordSplitter);
    }
    
    const encryptText = text => {
      const textSplitter = ' ';
    
      const words = text.split(textSplitter);
      const enycryptedWords = words.map(encryptWord);
      const enycryptedText = enycryptedWords.join(textSplitter);
    
      return enycryptedText;
    }
    
    const input = document.querySelector('input');
    const resultContainer = document.querySelector('.result');
    
    input.addEventListener('input', e => {
      resultContainer.textContent = encryptText(e.target.value);
    })
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    
    input,
    .result {
      font-size: 2rem;
    }
    <input type="text" />
    <div class="result"></div>

    听起来不错,但前提是我们可以使用空格作为分隔符将句子分成单词。尝试input在单词后面插入标点符号、省略号或此列表中除空格之外的其他内容。您将看到程序如何立即开始意外地工作

    为了避免这种情况,我提出了另一种使用replaceAll的方法,它可以有一个函数作为第二个参数,该函数将接收所有出现的情况(以及更多)作为输入:

    1. 现在我们不分离文本,而是查找其中仅由字母 ( \p{L}) 组成且长度为 3 或以上的单词 ( {3,})
    2. 加密单词的步骤保持不变(如您所见,将大函数分解为较小的函数是有意义的):

    const encryptWord = word => {  
      const wordSplitter = '';
    
      const lettersOfWord = word.split(wordSplitter);
      const lastIndex = word.length - 1;
    
      const buf = lettersOfWord[1];
      lettersOfWord[1] = lettersOfWord[lastIndex];
      lettersOfWord[lastIndex] = buf;
    
      return lettersOfWord.join(wordSplitter);
    }
    
    const encryptText = text => text.replaceAll(/\p{L}{3,}/gu, encryptWord);
    
    const input = document.querySelector('input');
    const resultContainer = document.querySelector('.result');
    
    input.addEventListener('input', e => {
      resultContainer.textContent = encryptText(e.target.value);
    })
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }
    
    input,
    .result {
      font-size: 2rem;
    }
    <input type="text" />
    <div class="result"></div>

    PS为了更好地理解我使用的正则表达式,我推荐以下文章:

    1. RegExp.prototype.unicode
    2. Unicode 字符类转义:\p{...}、\P{...}
    3. 量词:*、+、?、{n}、{n,}、{n,m}
    • 0

相关问题

  • 第二个 Instagram 按钮的 CSS 属性

  • 由于模糊,内容不可见

  • 弹出队列。消息显示不正确

  • 是否可以在 for 循环中插入提示?

  • 如何将 JSON 请求中的信息输出到数据表 Vuetify vue.js?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5