[c#] 문자열이 너무 긴 경우“…”로 어떻게자를 수 있습니까?

누군가가 좋은 아이디어를 가지고 있기를 바랍니다. 다음과 같은 문자열이 있습니다.

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에는 기본 제공 메서드가 없지만 직접 작성하는 것은 매우 쉬운 방법입니다. 단계는 다음과 같습니다. 직접 만들어보고 결과를 알려주십시오.

  1. 메서드, 아마도 확장 메서드 만들기 public static void TruncateWithEllipsis(this string value, int maxLength)

  2. 전달 된 값이 속성을maxLength 사용하여 지정된 값보다 큰지 확인합니다 . 경우 보다 크지 단지를 반환합니다 .LengthvaluemaxLengthvalue

  3. 전달 된 값을있는 그대로 반환하지 않으면 잘라야한다는 것을 알 수 있습니다. 따라서 SubString메서드를 사용하여 문자열의 더 작은 섹션을 가져와야합니다 . 이 메서드는 지정된 시작 및 종료 값을 기반으로 문자열의 더 작은 섹션을 반환합니다. 끝 위치는 maxLength매개 변수 에 의해 전달 된 것이므로 사용하십시오.

  4. 문자열의 하위 섹션과 생략 부호를 반환합니다.

나중을위한 훌륭한 연습은 방법을 업데이트하고 완전한 단어 후에 만 ​​중단되도록하는 것입니다. 또한 오버로드를 생성하여 문자열이 잘린 것을 표시하는 방법을 지정할 수 있습니다. 예를 들어, 응용 프로그램이 클릭하여 더 자세한 정보를 표시하도록 설정된 경우 메서드는 “…”대신 “(더 보려면 클릭)”을 반환 할 수 있습니다.


답변

뒤에있는 코드 :

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;
}