我正在处理来自freecodecamp https://www.freecodecamp.com/challenges/truncate-a-string的编码挑战。
要完成此操作,我的代码必须满足以下3个条件:
如果字符串(第一个参数)长于给定的最大字符串长度(第二个参数),则截断该字符串。返回带有...结尾的截断字符串。
末尾插入的三个点也应添加到字符串长度。
但是,如果给定的最大字符串长度小于或等于3,则在确定截断的字符串时,添加三个点不会增加字符串长度。
我能够满足前两个条件,但由于某些原因,当我给出一个字符串长度小于或等于3的测试用例时,我的代码会抛出错误...
实施例: truncateString("绝对更长",2)应返回" Ab ..."但是返回" Absolutely Longe ..."
请帮忙。我的代码位于https://gist.github.com/adityatejas/7857c0866f67783e71a1c9d60d3beed8。
function truncateString(str, num)
{
var truncatedStr = '';
if (str.length > num)
{
truncatedStr = str.slice(0, num-3) + "...";
return truncatedStr;
}
else if (num <= 3)
{
truncatedStr = str.slice(0, num) + "...";
return truncatedStr;
}
else return str;
}
truncateString("Adi", 1);
答案 0 :(得分:0)
您想要创建一个函数,该函数接收两个参数,即您选择的字符串和最大长度。根据条件,我们需要三种情景。
当给定的字符串超过最大值且最大值小于或等于3.在这种情况下,省略号不会添加到字符串的末尾。我们从第一个字符(位置零)到三个小于最大值的字符串切片,然后添加省略号。
当给定的字符串超过最大值且最大值大于3.在这种情况下,我们的字符串固有地变长。我们将切片参数更新为从第一个索引到字符串的长度,并在其上添加省略号。
否则,只需返回字符串,因为它不超过最大长度。
var truncatedString = document.getElementById("truncated-string");
function truncateString(myString, strLength) {
if (myString.length > strLength) {
if (strLength <= 3) {
return myString.slice(0, strLength - 3) + "...";
}
else {
return myString.slice(0, strLength) + "...";
}
}
else {
return myString;
}
}
var userInput = prompt("Please enter a string");
var lengthLimit = prompt("Enter a maximum length");
truncatedString.innerHTML = truncateString(userInput, lengthLimit);
&#13;
<p id="truncated-string"></p>
&#13;
答案 1 :(得分:0)
您可以使用conditional (ternary) operator ?:
和String#slice
function truncateString(str, num) {
return str.length > num ?
str.slice(0, num > 3 ? num - 3 : num) + "..." :
str;
}
console.log(truncateString("Abcdefghijk", 5));
console.log(truncateString("A-", 1));
console.log(truncateString("Alpha", 5));
console.log(truncateString("Beta", 5));
console.log(truncateString("Epsilon", 3));
&#13;
答案 2 :(得分:0)
这是一个简单的解决方案:
function truncateString(str, num) {
if (str.length > num) {
return str.slice(0, num) + "...";}
else {
return str;}}