JavaScript函数:将函数输入str中的第一个字母和_后面的所有字母大写

JavaScript Function: Capitalize First Letter and All Letters Following _ in Input Str of Function

假设我有一个接受字符串输入的函数。

字符串输入如下所示:"first_time_run"

下面是我的代码

function changeInput (str) {
  // your code here
  return str[0].toUpperCase()+id.slice(1)
}

上面的代码 returns First_time_run 当我想要它时 return First_Time_Run

我做错了什么?

您可以像这样使用您的函数。它将您的输入拆分为 _,将每个输入的首字母大写,然后重新加入:

var input = "first_time_run";

function changeCap(str) {
  // your code here
  return str[0].toUpperCase()+str.slice(1)
}

function changeInput(str) {
  return str.split("_").map((val) => changeCap(val)).join("_");
}

console.log(changeInput(input))

或者您可以用正则表达式替换:

var input = "first_time_run";


function changeInput(str) {
  return str.replace(/(^\w|(?<=_)\w)/g, (l)=> l.toUpperCase())
}

console.log(changeInput(input))

考虑以下扩展示例:

  1. 由于您需要将一个字符大写,我们需要遍历所有字符
  2. 我们可以用循环重建字符串并使用标志来指示下一个字符是否应该大写。
  3. 根据您的示例,我们需要检测的特殊字符是下划线 _
  4. 结果将是 _ 大写后的所有字符。

function changeInput(str) {
  var newStr = '';
  // Uppercase the first letter by default
  var upperCaseNext = true;
  
  // Loop to reconstruct the input string letter by letter
  for (var i = 0; i < str.length; i++) {
    if (upperCaseNext) {
      // Uppercase the current character and add it to the new string
      newStr += str[i].toUpperCase();
      // Reset the flag
      upperCaseNext = false;
    } else {
      // Add the current character as is
      newStr += str[i];
      // If current character is _ then enable flag to uppercase the next character
      upperCaseNext = str[i] === '_';
    }
  }

  return newStr;
}

let test = 'first_time_run';
console.log(test, '=>', changeInput(test))

在没有正则表达式的情况下这样做怎么样(因为你没有特别提到你只想使用正则表达式):

function convertToFirstUpper(sInput) {
    return sInput.split('_').reduce((sPrev, sWord) => `${sPrev}_${sWord[0].toUpperCase()}${sWord.slice(1)}`, '').slice(1)
}

let sResult = convertToFirstUpper('first_time_run');

 console.log(sResult);

我在 phone 上输入了这个,所以很难格式化代码。

您还可以使用 for 循环遍历您的代码,并使用 if 条件,该条件仅在第一个字母为小写时才将其大写。

这里的关键是显示什么类型的字符将要大写的数组字符拆分,然后将字符重新连接成由相同下划线字符分隔的字符串。

let result = "first_time_run";

function makeFirstUpper(result1) {
  let newValue = result1.split('_');

  for(let i = 0; i < newValue.length; i++){
    if(newValue[i].charAt(0) == newValue[i].charAt(0).toLowerCase()){
    newValue[i] = newValue[i].charAt(0).toUpperCase() + newValue[i].substring(1);
    }
  }
  return newValue.join('_');
}

console.log(makeFirstUpper(result));