누군가가 좋은 아이디어를 가지고 있기를 바랍니다. 다음과 같은 문자열이 있습니다.
abcdefg
abcde
abc
내가 필요한 것은 지정된 길이보다 더 많은 경우 다음과 같이 표시되도록 잘리는 것입니다.
abc ..
abc ..
abc
이를 위해 사용할 수있는 간단한 C # 코드가 있습니까?
답변
다음은 확장 메서드에 래핑 된 논리입니다.
public static string Truncate(this string value, int maxChars)
{
return value.Length <= maxChars ? value : value.Substring(0, maxChars) + "...";
}
용법:
var s = "abcdefg";
Console.WriteLine(s.Truncate(3));
답변
public string TruncString(string myStr, int THRESHOLD)
{
if (myStr.Length > THRESHOLD)
return myStr.Substring(0, THRESHOLD) + "...";
return myStr;
}
실제로 THRESHOLD 변수가 필요하거나 항상 같은 크기 인 경우를 대비하여 명명 규칙을 무시하십시오.
또는
string res = (myStr.Length > THRESHOLD) ? myStr.Substring(0, THRESHOLD) + ".." : myStr;
답변
모두 매우 좋은 대답이지만, 문자열이 문장 인 경우 조금만 정리하려면 단어 중간에서 문자열을 끊지 마십시오.
private string TruncateForDisplay(this string value, int length)
{
if (string.IsNullOrEmpty(value)) return string.Empty;
var returnValue = value;
if (value.Length > length)
{
var tmp = value.Substring(0, length) ;
if (tmp.LastIndexOf(' ') > 0)
returnValue = tmp.Substring(0, tmp.LastIndexOf(' ') ) + " ...";
}
return returnValue;
}
답변
다음은 타원의 길이를 설명하는 버전입니다.
public static string Truncate(this string value, int maxChars)
{
const string ellipses = "...";
return value.Length <= maxChars ? value : value.Substring(0, maxChars - ellipses.Length) + ellipses;
}
답변
이 작업을 수행하는 .NET Framework에는 기본 제공 메서드가 없지만 직접 작성하는 것은 매우 쉬운 방법입니다. 단계는 다음과 같습니다. 직접 만들어보고 결과를 알려주십시오.
-
메서드, 아마도 확장 메서드 만들기
public static void TruncateWithEllipsis(this string value, int maxLength)
-
전달 된 값이 속성을
maxLength
사용하여 지정된 값보다 큰지 확인합니다 . 경우 보다 크지 단지를 반환합니다 .Length
value
maxLength
value
-
전달 된 값을있는 그대로 반환하지 않으면 잘라야한다는 것을 알 수 있습니다. 따라서
SubString
메서드를 사용하여 문자열의 더 작은 섹션을 가져와야합니다 . 이 메서드는 지정된 시작 및 종료 값을 기반으로 문자열의 더 작은 섹션을 반환합니다. 끝 위치는maxLength
매개 변수 에 의해 전달 된 것이므로 사용하십시오. -
문자열의 하위 섹션과 생략 부호를 반환합니다.
나중을위한 훌륭한 연습은 방법을 업데이트하고 완전한 단어 후에 만 중단되도록하는 것입니다. 또한 오버로드를 생성하여 문자열이 잘린 것을 표시하는 방법을 지정할 수 있습니다. 예를 들어, 응용 프로그램이 클릭하여 더 자세한 정보를 표시하도록 설정된 경우 메서드는 “…”대신 “(더 보려면 클릭)”을 반환 할 수 있습니다.
답변
뒤에있는 코드 :
string shorten(sting s)
{
//string s = abcdefg;
int tooLongInt = 3;
if (s.Length > tooLongInt)
return s.Substring(0, tooLongInt) + "..";
return s;
}
마크 업 :
<td><%= shorten(YOUR_STRING_HERE) %></td>
답변
그 목적을 위해 메소드를 구현하는 것이 더 낫습니다.
string shorten(sting yourStr)
{
//Suppose you have a string yourStr, toView and a constant value
string toView;
const int maxView = 3;
if (yourStr.Length > maxView)
toView = yourStr.Substring(0, maxView) + " ..."; // all you have is to use Substring(int, int) .net method
else
toView = yourStr;
return toView;
}