将字符串分叉,删除字符串的中间而不是结尾
Bifurcate a string, removing the middle of the string instead of end
我想要类似于 this question I found lead me to this answer on another question where I tried to convert it from php to c# 我尝试转换它的东西...非常失败:
private string trimString(string str, int maxCharacters = 16)
{
int textLength = str.Length;
return str.Substring(maxCharacters/2, textLength-maxCharacters).Insert(maxCharacters/2,"...");
}
所以做 trimString("123456789", 9)
输出 123...789
当我想做类似 123...012
或类似的事情时..我不太明白,我尝试了很多不同的版本主要导致输入乱序。
如果可能的话我希望它是一个简单的函数,不包括其他库或在每次调用时初始化一个新的object,因为我计划使用它很快 session。我真的很希望它不要切断单词并放置省略号,但这不是必需的。
this returns 123...012
for trimString("123456789012", 6)
首尾3个字符,用...
.
分隔
public static string trimString(string str, int max = 16)
{
if (str.Length <= max)
{
return str;
}
return str.Substring(0, max / 2) + "..." + str.Substring(str.Length - max / 2, max / 2);
}
问题是您插入 ...
的 Substring(maxCharacters/2, textLength-maxCharacters)
已经有您不想看到的字符 - 456789
。之后就没办法修复了。
您应该做的是选择前缀和后缀,并将它们连接在一起,如下所示:
private static string trimString(string str, int maxCharacters = 16) {
if (str.Length <= maxCharacters) {
return str;
}
var suffixLength = maxCharacters / 2;
// When maxCharacters is odd, prefix will be longer by one character
var prefixLength = maxCharacters - suffixLength;
return string.Format(
"{0}...{1}"
, str.Substring(0, prefixLength)
, str.Substring(str.Length-suffixLength, suffixLength)
);
}
我想要类似于 this question I found lead me to this answer on another question where I tried to convert it from php to c# 我尝试转换它的东西...非常失败:
private string trimString(string str, int maxCharacters = 16)
{
int textLength = str.Length;
return str.Substring(maxCharacters/2, textLength-maxCharacters).Insert(maxCharacters/2,"...");
}
所以做 trimString("123456789", 9)
输出 123...789
当我想做类似 123...012
或类似的事情时..我不太明白,我尝试了很多不同的版本主要导致输入乱序。
如果可能的话我希望它是一个简单的函数,不包括其他库或在每次调用时初始化一个新的object,因为我计划使用它很快 session。我真的很希望它不要切断单词并放置省略号,但这不是必需的。
this returns 123...012
for trimString("123456789012", 6)
首尾3个字符,用...
.
public static string trimString(string str, int max = 16)
{
if (str.Length <= max)
{
return str;
}
return str.Substring(0, max / 2) + "..." + str.Substring(str.Length - max / 2, max / 2);
}
问题是您插入 ...
的 Substring(maxCharacters/2, textLength-maxCharacters)
已经有您不想看到的字符 - 456789
。之后就没办法修复了。
您应该做的是选择前缀和后缀,并将它们连接在一起,如下所示:
private static string trimString(string str, int maxCharacters = 16) {
if (str.Length <= maxCharacters) {
return str;
}
var suffixLength = maxCharacters / 2;
// When maxCharacters is odd, prefix will be longer by one character
var prefixLength = maxCharacters - suffixLength;
return string.Format(
"{0}...{1}"
, str.Substring(0, prefixLength)
, str.Substring(str.Length-suffixLength, suffixLength)
);
}