0

C# コンソール アプリがあり、ツイートを投稿したいと考えています。現在、TweetSharp を API ラッパーとして使用しています。140文字を超えるツイートを投稿すると、禁止エラーが発生します。これらのツイートを 140 文字に自動的に切り詰める方法はありますか?

.Substring(0, 140) を介して手動で試してみましたが、投稿時に TweetSharp が UTF-8 に自動変換すると思います。文字列にアンパサンドがある場合、TweetSharp は 140 の切り捨てられたテキスト文字列を 141+ に変換します投稿に失敗する文字列。

4

1 に答える 1

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]+", "");
    } 
}

正規表現を少し調整する必要があるかもしれません。頑張って楽しんでね :)

于 2012-09-01T06:50:16.380 に答える