ソースコード
using System.Collections.Generic;
using System.Text;
public static class StringExt
{
<summary>
</summary>
public static IList<string> SplitByMultiByte( this string self, int count )
{
var result = new List<string>();
var output = string.Empty;
var encoding = Encoding.GetEncoding( "Shift_JIS" );
if ( string.IsNullOrEmpty( self ) || count <= 0 ) return result;
for ( int i = 0; i < self.Length; i++ )
{
var str = self[ i ].ToString();
var totalLength = encoding.GetByteCount( output ) + encoding.GetByteCount( str );
if ( totalLength == count )
{
result.Add( output + str );
output = string.Empty;
}
else if ( count < totalLength )
{
result.Add( output );
output = str;
}
else
{
output += str;
}
}
if ( !output.Equals( string.Empty ) )
{
result.Add( output );
}
return result;
}
}
使い方
var str1 = "ピカチュウカイリューヤドラン";
foreach ( var n in str1.SplitByMultiByte( 10 ) )
{
Console.WriteLine( n );
}
var str2 = "1111122222333334444455555";
foreach ( var n in str2.SplitByMultiByte( 5 ) )
{
Console.WriteLine( n );
}
ピカチュウ
カイリュー
ヤドラン
11111
22222
33333
44444
55555
参考サイト様
関連記事