0

C# での php 関数 mb_strcut の実装を知っている人はいますか?

http://php.net/manual/en/function.mb-strcut.php

mb_strcut() は、mb_substr() と同様に文字列から部分文字列を抽出しますが、文字ではなくバイトを操作します。カット位置がマルチバイト文字の 2 バイトの間にある場合は、その文字の最初のバイトからカットが実行されます。これは、substr() 関数との違いでもあります。substr() 関数は、単純に文字列をバイト間で切断するため、不正な形式のバイト シーケンスが発生します。

4

1 に答える 1

0

ありがとう Dash はあなたの助けがなければ以下を書くことはできなかったでしょう

    public static string LimitByteLength(string input, int startByte, int byteLength)
    {
        var maxLength = startByte + byteLength;
        return 
            new string(
                input.SkipWhile((c, i) => GetByteCount(input.Substring(0, i + 1)) <= startByte)
                    .TakeWhile((c, i) => GetByteCount(input.Substring(0, i + 1)) <= maxLength).ToArray());
    }

    private static int GetByteCount(string input)
    {
        return Encoding.Unicode.GetByteCount(input);
    }
于 2013-02-12T11:24:00.350 に答える