2012-09-01 4 views
0

나는 C# 콘솔 앱을 가지고 있으며 짹짹을 게시하고 싶습니다. 현재 TweetSharp를 API 래퍼로 사용하고 있습니다. 140 자 이상의 트윗을 올리면 금지 된 오류가 발생합니다. 이 트윗을 140 자로 자동자를 수있는 방법이 있습니까?C# Console App - Auto-Truncate 140 Chars 짹짹

.Substring (0, 140)을 통해 수동으로 시도했지만 TweetSharp가 게시 할 때 자동으로 UTF-8로 변환되고, 문자열에 앰퍼샌드가 있으면 TweetSharp가 내 140 잘린 텍스트 문자열을 변환합니다 141 + 문자열에 게시 실패합니다.

답변

1

다음과 같이 할 수 있습니다.

문자열을 잘라내어 첨부 된 코드로 금지 된 부분을 제거하십시오.

var myResult = TruncateString(yourinput, 137).VariableSafeString(); 

여기에는 remove를 사용하여 잘립니다.

private string TruncateString(string input, int length) 
{ 
    if (input == null || input.Length < length) 
     return input; 

    return input.Remove(length, input.Length - length) + "..."; 
} 

그리고 일부 확장 메서드

public static class StringMethods 
{ 
    /// <summary> 
    /// Remove nordic characters and accents 
    /// Example 
    ///  "ÅÄÖ/\\íå íàøëîñü ôîðìû äëÿ îòïðàâêè" will be returned as "AAO/\\ia iaøeinu oiðiu aey ioiðaaee" 
    /// </summary> 
    /// <param name="s"></param> 
    /// <returns></returns> 
    public static string RemoveDiacritics(this string s) 
    { 
     string normalizedString = s.Normalize(NormalizationForm.FormD); 
     StringBuilder stringBuilder = new StringBuilder(); 
     for (int i = 0; i < normalizedString.Length; i++) 
     { 
      char c = normalizedString[i]; 
      if (CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark) 
       stringBuilder.Append(c); 
     } 
     return stringBuilder.ToString(); 
    } 

    /// <summary> 
    /// Make string variable safe 
    /// Example 
    ///  "ÅÄÖ/\\íå íàøëîñü ôîðìû äëÿ îòïðàâêè" will be returned as "AAOiaiaeinuoiiuaeyioiaaee" 
    /// </summary> 
    /// <param name="s"></param> 
    /// <returns></returns> 
    public static string VariableSafeString(this string s) 
    { 
     return Regex.Replace(s.RemoveDiacritics(), "[^0-9a-zA-Z]+", ""); 
    } 
} 

나는 당신이 정규 표현식을 조금 조정해야 할 수도 있습니다 가정합니다. 행운을 빌며 즐겁게 보내세요.