截断 Javascript 中的字符串(有约束)
Truncating a String in Javascript (with constraints)
我正在应对来自 freecodecamp https://www.freecodecamp.com/challenges/truncate-a-string 的编码挑战。
要完成此代码,我的代码必须满足以下 3 个条件:
如果字符串(第一个参数)比给定的最大字符串长度(第二个参数)长,则截断该字符串(第一个参数)。 Return 以 ... 结尾的截断字符串。
末尾插入的三个点也应该加上字符串长度
但是如果给定的最大字符串长度小于或等于3,则在确定截断字符串时添加三个点不会增加字符串长度。
我能够满足前两个条件,但出于某种原因,当我给出一个字符串长度小于或等于 3 的测试用例时,我的代码会抛出一个错误...
示例:
truncateString("Absolutely Longer", 2) 应该 return "Ab..." 而不是 returns "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);
您想创建一个接受两个参数的函数,一个您选择的字符串和一个最大长度。根据条件,我们需要三个场景。
当给定的字符串超过最大值且最大值小于等于3时,这种情况下,字符串末尾不加省略号。我们从第一个字符(位置零)开始截取字符串的一部分,直到比最大值少三个,然后添加省略号。
当给定的字符串超过最大值并且最大值大于3时。在这种情况下,我们的字符串自然会变长。我们更新切片参数,从第一个索引到字符串的长度,并在其上添加省略号。
否则,只return原样的字符串,因为它没有超过最大长度。
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);
<p id="truncated-string"></p>
您可以使用 conditional (ternary) operator ?:
and 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));
这是一个简单的解决方案:
function truncateString(str, num) {
if (str.length > num) {
return str.slice(0, num) + "...";}
else {
return str;}}
我正在应对来自 freecodecamp https://www.freecodecamp.com/challenges/truncate-a-string 的编码挑战。
要完成此代码,我的代码必须满足以下 3 个条件:
如果字符串(第一个参数)比给定的最大字符串长度(第二个参数)长,则截断该字符串(第一个参数)。 Return 以 ... 结尾的截断字符串。
末尾插入的三个点也应该加上字符串长度
但是如果给定的最大字符串长度小于或等于3,则在确定截断字符串时添加三个点不会增加字符串长度。
我能够满足前两个条件,但出于某种原因,当我给出一个字符串长度小于或等于 3 的测试用例时,我的代码会抛出一个错误...
示例: truncateString("Absolutely Longer", 2) 应该 return "Ab..." 而不是 returns "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);
您想创建一个接受两个参数的函数,一个您选择的字符串和一个最大长度。根据条件,我们需要三个场景。
当给定的字符串超过最大值且最大值小于等于3时,这种情况下,字符串末尾不加省略号。我们从第一个字符(位置零)开始截取字符串的一部分,直到比最大值少三个,然后添加省略号。
当给定的字符串超过最大值并且最大值大于3时。在这种情况下,我们的字符串自然会变长。我们更新切片参数,从第一个索引到字符串的长度,并在其上添加省略号。
否则,只return原样的字符串,因为它没有超过最大长度。
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);
<p id="truncated-string"></p>
您可以使用 conditional (ternary) operator ?:
and 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));
这是一个简单的解决方案:
function truncateString(str, num) {
if (str.length > num) {
return str.slice(0, num) + "...";}
else {
return str;}}