1

我有一个字符串,15.Prototypal-Inheritance-and-Refactoring-the-Slider.txt我想让它看起来像15.Prototypal...-Slider.txt

length文本是,56我怎样才能保留前 12 个字母和最后 10 个字母(包括标点符号)并将其他字母替换为...

我真的不知道如何开始代码,我做了类似的东西

var str="15.Prototypal-Inheritance-and-Refactoring-the-Slider.txt";
str.split("// ",1);

虽然这给了我我需要的东西,但我如何根据字母而不是单词获得结果。

4

5 回答 5

6

您可以使用str.slice()

function middleEllipsis(str, a, b) {
  if (str.length > a + b)
    return str.slice(0, a) + '...' + str.slice(-b);
  else
    return str;
}

middleEllipsis("15.Prototypal-Inheritance-and-Refactoring-the-Slider.txt", 12, 10);
// "15.Prototypa...Slider.txt"

middleEllipsis("mpchc64.mov", 12, 10);
// "mpchc64.mov"
于 2013-07-08T01:30:42.127 回答
2

此功能将满足您的要求:

function fixString(str) {
  var LEN_PREFIX = 12;
  var LEN_SUFFIX = 10;
  if (str.length < LEN_PREFIX + LEN_SUFFIX) { return str; }
  return str.substr(0, LEN_PREFIX) + '...' + str.substr(str.length - LEN_SUFFIX - 1);
}

您可以根据需要调整 LEN_PREFIX 和 LEN_SUFFIX,但我有您在帖子中指定的值。您还可以通过为函数设置前缀和后缀长度输入参数来使函数更通用:

function fixString(str, prefixLength, suffixLength) {
  if (str.length < prefixLength + suffixLength) { return str; }
  return str.substr(0, prefixLength) + '...' + str.substr(str.length - suffixLength - 1);
}
于 2013-07-08T01:39:30.630 回答
1

我想让它看起来像15.Prototypal...-Slider.txt
LIVE DEMO


无论后缀和前缀文本有多长,这都会得到所需的:

var str = "15.Prototypal-Inheritance-and-Refactoring-the-Slider.txt",
    sp = str.split('-'),
    newStr = str;
if(sp.length>1) newStr =  sp[0]+'...-'+ sp.pop() ;

alert( newStr ); //15.Prototypal...-Slider.txt

拆分字符串 at-并使用.pop()方法从拆分的字符串中检索最后一个 Array 值。
除了在某些定义的位置拆分字符串,它还将处理以下字符串:

11.jQuery-infinite-loop-a-Gallery.txt
返回:
11.jQuery...-Gallery.txt

于 2013-07-08T01:28:11.427 回答
0

这是另一种选择。请注意,这会保留前 13 个字符和后 11 个字符,因为这是您在示例中给出的内容:

var shortenedStr = str.substr(0, 13) + '...' + str.substring(str.length - 11);
于 2013-07-08T01:37:01.777 回答
-1

您可以使用 javascript substring 命令找出您想要的内容。

如果你的字符串总是 56 个字符,你可以这样做:

var str="15.Prototypal-Inheritance-and-Refactoring-the-Slider.txt";


var newstr = str.substring(0,11) + "..." + str.substring(45,55)

如果您的字符串长度不同,我强烈建议先找到字符串的长度,然后再做子字符串。

看看:http ://www.w3schools.com/jsref/jsref_substring.asp

于 2013-07-08T01:28:19.997 回答