String
입력 문자열이 제공된 길이보다 길면 N
첫 번째 N
문자 만 표시 되도록 클래스에 확장 메소드를 작성하고 싶습니다 .
그 모습은 다음과 같습니다.
public static string TruncateLongString(this string str, int maxLength)
{
if (str.Length <= maxLength)
return str;
else
//return the first maxLength characters
}
String.*()
첫 N
문자 만 얻기 위해 어떤 방법을 사용할 수 str
있습니까?
답변
public static string TruncateLongString(this string str, int maxLength)
{
if (string.IsNullOrEmpty(str))
return str;
return str.Substring(0, Math.Min(str.Length, maxLength));
}
답변
string truncatedToNLength = new string(s.Take(n).ToArray());
이 솔루션은 n이 s.Length보다 크면 여전히 올바른 일을한다는 점에서 작은 보너스를받습니다.
답변
당신은 LINQ를 사용할 수 있습니다 str.Take(n)
또는 str.SubString(0, n)
후자가 던질 곳, ArgumentOutOfRangeException
대한 예외를 n > str.Length
.
마음은 LINQ 버전이를 반환 IEnumerable<char>
, 그래서 당신은 변환해야 할 것 IEnumerable<char>
으로 string
: new string(s.Take(n).ToArray())
.
답변
C #에서 문자열 조작을 수행해야 할 때마다 Visual Basic의 이전 기능 Left
과 Right
함수가 누락 되어 사용하기가 훨씬 간단합니다 Substring
.
따라서 대부분의 C # 프로젝트에서 확장 방법을 만듭니다.
public static class StringExtensions
{
public static string Left(this string str, int length)
{
return str.Substring(0, Math.Min(length, str.Length));
}
public static string Right(this string str, int length)
{
return str.Substring(str.Length - Math.Min(length, str.Length));
}
}
참고 : 때문에 부분이 를 throw 이미 이전 답변에서 일부 의견에 언급 된 입력 문자열의 길이가 요청 된 길이보다 작은 경우.Math.Min
Substring
ArgumentOutOfRangeException
용법:
string longString = "Long String";
// returns "Long";
string left1 = longString.Left(4);
// returns "Long String";
string left2 = longString.Left(100);
답변
간단히:
public static String Truncate(String input,int maxLength)
{
if(input.Length > maxLength)
return input.Substring(0,maxLength);
return input;
}
답변
public static string TruncateLongString(this string str, int maxLength)
{
return str.Length <= maxLength ? str : str.Remove(maxLength);
}
답변
우리가 유효성 검사에 대해 이야기하고 있다면 왜 null 문자열 항목을 확인하지 않았습니까? 특별한 이유가 있습니까?
IsNullOrEmpty는 시스템 정의 방법이므로 삼항 연산자는 순환 복잡도 = 1이지만 if () {} else {}의 값은 2이므로 다음과 같이 도움이됩니다.
public static string Truncate(string input, int truncLength)
{
return (!String.IsNullOrEmpty(input) && input.Length >= truncLength)
? input.Substring(0, truncLength)
: input;
}