gpt4 book ai didi

javascript - 将每个单词的第一个和最后一个字母大写的功能不起作用

转载 作者:行者123 更新时间:2023-12-04 02:26:34 26 4
gpt4 key购买 nike

我创建了一个函数,给定任何字符串都将返回每个单词的第一个和最后一个字母大写的字符串。到目前为止,它在某些词上有效,而不是在其他词上,有人可以帮我找出原因吗?

function Capitalize(str) {
var spl = str.split(" ");
var words = [];
for (let i = 0; i < spl.length; i++) {
//For every word
for (let j = 0; j < spl[i].length; j++) {
//For every letter in each word
var word = spl[i];
var size = spl[i].length;
var firstLetterCapital = word.replace(word[0], word[0].toUpperCase()); //Creates new array
var LastLetterCapital = firstLetterCapital.replace(
word[size - 1],
word[size - 1].toUpperCase()
);
}
words.push(LastLetterCapital);
}
console.log(words.join(" "));
}

Capitalize("hello there");

它在我输入时有效: Capitalize("my name is john smith") , 但不是 Capitalize("hello there")
我知道这完全是一团糟,而且可能是一种非常糟糕的做法,但我一个月前开始编程,所以让我休息一下:)

最佳答案

@symlink 已经解释了为什么它是“Hello TherE”而不是“Hello TherE”。他还给出了一个解决方案来明确定位字符串的第一个和最后一个字符。我所做的与成员已经发布的没有太大不同,除了..“可能”多一点解释。

您可以通过这四个步骤来解决整个问题。

  • 将所有单词放入一个数组中。
  • 创建一个函数,获取每个单词并以第一个和最后一个字符为目标,对其进行更改并返回更改后的单词。
  • 使用上面创建的函数(在步骤 2 中)将映射步骤应用于整个单词数组(在步骤 1 中获得)。
  • 加入在步骤 3 中获得的转换后的数组,使用空格作为分隔符。

  • 我写了两个函数来完成这个任务。我很抱歉函数名称太长。它可以帮助我跟踪复杂程序中的事情(尤其是当我赶时间的时候!)。

    第 2 步功能

    function Capitalize_FirstAndLast_One_Word(word){
    // Split the string in array for easy access/manipulation by indexing
    Split_String = word.split("")
    // Target the first word
    Split_String[0] = Split_String[0].toUpperCase();
    // Target the last word
    Split_String[Split_String.length - 1] = Split_String[Split_String.length - 1].toUpperCase();
    // Join the array into a single word
    Joined_Back = Split_String.join("")
    return Joined_Back;
    }

    步骤 1、3 和 4 功能

    function Capitalize_Entire_String(str){
    Regular_Exp = new RegExp(/\w+/g);

    //Below is step 1
    MatchedArray = str.match(Regular_Exp);

    //Below is step 3
    ConvertedArray = MatchedArray.map(Capitalize_FirstAndLast_One_Word);

    // Below is step 4
    ReturnedString = ConvertedArray.join(" ");
    console.log(ReturnedString);
    return ReturnedString;
    }

    现在你拥有了一切。您可以使用如下功能。

    Capitalize_Entire_String("hello there");
    Capitalize_Entire_String("hello there this is a test");

    希望这可以帮助。如果这对你来说是一个多余的答案,我很抱歉。

    关于javascript - 将每个单词的第一个和最后一个字母大写的功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59523362/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com