【C#】S-JIS化した文字列の指定位置の文字種を得る関数
関連記事
- 【#CSHARP】ソリューション内でサービス,Winformアプリを混在で作成させ,バイナリ出力先を同じにするとサービスが起動しない 【2024年02月08日(木)】
- 【#PHP】謎な #Laravel 案件 引き渡したじ 【2024年01月11日(木)】
- 【C#】謎な改造アプリ,SIMD命令を導入して高速化しようか,思案中 【2023年11月14日(火)】
- Javaの”やらかし”でC#と人気逆転か 激変プログラミング言語人気ランキング 【2023年10月18日(水)】
- 【#CSHARP】次の案件のスケルトン書いてgitサーバに登録するなどと 【2023年05月16日(火)】
めんどくせぇ~~(苦笑
UniCodeの時代やじぃ~.今どき,S-JISの文字種チェックが必要になるとはのぉ
VB6とか,VC++4とか,DELPHI5時代のS-JISチェック,すでに捨てたじぃ
いや,どこかにあるじゃろけど,アーカイブを解凍するのがメンドクサ(爆
某システム向けの,特殊プリンタに流しこむ文字コードが,S-JISで
文字列を切り貼りした時,中途半端に文字列末に全角1バイト目が残ったりでもしたら
機械が誤動作するのは,この業界,周知の事実じゃろしのぉ?
ってことで,C#の文字列(UniCode)を急遽書き起こしてみた
全くチェックしてないじぃ(いや,今から,チェックするけど)
ってことで,バグってたらスマンこってす
//————————
//sjisの文字種チェック
//return -1: 文字位置不正
// -2: byte配列不正
// -3: それ以外不正
// 1: 制御文字
// 2: 一般半角
// 3: カナ半角
// 11: 全角1バイト目
// 12: 全角2バイト目
// 99: それ以外の文字
//
//————————
public static int is_SjisCharType(byte[] buf, int checkloc)
{
int result = -3;
if (buf.Length == 0)
{
return -2;
}
if ((checkloc < 0) || (checkloc >= buf.Length))
{
return -1;
}
bool zenkakufl = false;
for(int i = 0; i < buf.Length; i++)
{
byte c = buf[i];
if (zenkakufl == false) //通常モード
{
if ((c >= 0) && (c < 0x20)) //制御コード
{
result = 1;
}
else if ((c >= 0x20) && (c <= 0x7f)) //一般半角
{
result = 2;
}
else if (((c >= 0x81) && (c <= 0x9f)) || ((c >= 0xe0) && (c <= 0xfc))) //全角1バイト目
{
result = 11;
zenkakufl = true;
}
else if ((c >= 0xa0) && (c <= 0xdf)) //カナ半角
{
result = 3;
}
else //それ以外の文字
{
result = 99;
}
}
else //全角1バイト目モード
{
if ((c >= 0x40) && (c <= 0xfc)) //全角2バイト目
{
result = 12;
}
else //それ以外の文字種
{
result = 99;
}
zenkakufl = false;
}
if (i == checkloc) //指定位置が来たら抜ける
{
break;
}
}
return result;
}
private void btn_Click(object sender, EventArgs e)
{
string st = "aイウ絵男";
byte[] tmpByteAry = System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(st); //文字列をS-JISでエンコードし,Byte配列に格納
int i = classCommonInfo.is_SjisCharType(tmpByteAry, 1); //指定位置の文字種を取得
MessageBox.Show(i.ToString(), "確認",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
[/csharp]
UNICODEとS-JISが混在してたらオモシロイ
>>康ちゃん@お仕事ちぅ さま
UNICODE体系中にSJISコードが混ざったら,そりゃ,化け文字やじ(爆
これ何語?www
>>ペット さま
C言語やじぃ~(ちょいと違うが)