не могу конвертировать мою строку, используя функции верхнего и нижнего регистра в JavaScript - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь создать функцию, которая изменяет первую букву моей строки в верхний регистр, а остальные буквы в нижний регистр.Я написал следующий код, но он не меняет строку при компиляции.Я не знаю, что я сделал не так здесь.Есть указатели?!

var e1;

function capFirstLetter(myString) {        
  myString = (myString.substring(0,1)).toUpperCase();    
  myString = (myString.substring(1, myString.length)).toLowerCase();      
  return myString;
  
}

e1 = prompt("Please Enter Your First Name");    
capFirstLetter(e1);    
console.log("The result is: " + e1);

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Я удивлен, что ни один из ответов не использует .charAt(0) и .slice(1) для этого.Это намного чище и требует меньше кода, чтобы делать то, что нужно после ОП.

var e1;

function capFirstLetter(myString) {        
  return myString.charAt(0).toUpperCase() + myString.slice(1).toLowerCase();
}

e1 = prompt("Please Enter Your First Name");    
e1 = capFirstLetter(e1);    
console.log("The result is: " + e1);
0 голосов
/ 29 мая 2018

capFirstLetter(el) возвращает значение.Вы вызываете функцию, но не захватываете это возвращаемое значение, а просто записываете исходный ответ из propmt.

Кроме того, вы отбрасываете все, кроме первой буквы в вашей функции, потому что вы сразу перезаписываете входной аргумент только первой буквой.Вам нужна вторая переменная для ее хранения.

См. Встроенные комментарии:

var e1 = prompt("Please Enter Your First Name");

function capFirstLetter(myString) {     

  // This only returns the first letter of the string.
  // So, you don't want to overwrite the input because you'll lose the rest of the word
  var newString = myString.substring(0,1).toUpperCase(); 
  
  // Now, you have to concatenate the first letter (from above) with the rest
  myString = newString + myString.substring(1, myString.length).toLowerCase();      

  return myString;
}
  
var result = capFirstLetter(e1);    // Capture the function's return value
console.log("The result is: " + result);
0 голосов
/ 29 мая 2018

Здесь пара вещей не так.Когда вы вводите примитивную переменную в функцию (т. Е. Не в объект), переменная копируется, а не перемещается напрямую.Это означает, что строка myString внутри функции является строкой, совершенно отличной от той, которая находится вне функции, и изменения не будут отражены в вашей внешней строке.

Во-вторых, вы перезаписываете указанную строку первым символом(с большой буквы), затем перезаписываем это снова оставшимися символами, которых больше не существует!В результате ваша функция возвращает пустую строку "".

Наконец, вы возвращаете эту пустую строку из функции, но ничего с ней не делаете.

Возможно, вы пытаетесьДля этого:

var e1;

function capFirstLetter(myString) {        
  first = (myString.substring(0,1)).toUpperCase();    
  rest = (myString.substring(1, myString.length)).toLowerCase();      
  return first + rest;
  
}

e1 = prompt("Please Enter Your First Name");    
e1 = capFirstLetter(e1);    
console.log("The result is: " + e1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...