2011-11-07 138 views
-3

我有一个简单的问题,我无法找到答案。我想创建一个字符串,在50个字符之后用三个点代替它后面的所有内容?因此,作为一个简单的例子:C# - 字符串替换

(敏捷的棕色狐狸跳过了懒狗) 将成为类似: (敏捷的棕色狐狸跳过了啦...)

如果有人能够给我一个快速的答案或指向我的回答问题,将不胜感激?

+2

您是否尝试过使用'Substring'获取前50个字符的最简单方法?你碰到了什么缺陷,比如输入的长度不恰当,可能是在字里面或者在标点符号之后出现不幸,等等。 –

+1

你尝试过谷歌吗?它很难相信,你找不到这样简单的东西... – sasjaq

+0

看到类似的问题上SO: http://stackoverflow.com/search?q=truncate+c%23+string和在网络上: http://www.bing.com/search?setmkt=en-US&q=truncate+a+c%23+string – Mark

回答

8
if (text.Length > 50) 
    text = text.Substring(0,50) + "..."; 
+0

非常感谢你这个完美的作品 – Aaron

1

我的假设是,你最多只需要maxLength字符。

if(string.Length >= maxLength) 
{ 
    string newString = string.Substring(0, maxLength - 3); 
    newString += "..."; 
} 
+0

这会留下47个字符。他只需要50个字符后的三个点,除非当然maxLength == 53. :) – doctorless

+0

'string.length()'你用什么C#方言? ;-) –

+1

@UweKeim java sharp = p – Woot4Moo

3

使用子:(yourstringvariable.Length > 50 ? yourstringvariable.Substring(0, 50) + "..." : yourstringvariable);

5
string shortened = s.Length > 50 ? s.Substring(0, 50) + "..." : s; 

可能需要一些调整,因为这其中也将被省略,如果您对显示长度的目的这样做是代替单个字符可能不够。

+0

诅咒。您通过使用单个字符变量节省了时间。 –

+0

Psh,我还重写了使用条件表达式而不是'if'语句的代码:-P – Joey

+2

C#中允许使用保留关键字作为变量名吗? –

1

试试下面的代码:

string mystring; 
myString = (orig_string.Length > 50) ? orig_string.SubString(0, 50) + "..." : orig_string; 
2

它也可能是好的,其实现为一个扩展方法。像这样:

public static class StringExtensions 
{ 
    public static string Truncate(this String str, int length) 
    { 
     return str.Substring(0, length) + "..."; 
    } 
} 
+1

+1我也成为了扩展方法瘾君子。 –