请问vb如何判断字符串含有特殊符号如全角符号(【,@,】)等呢? 主要目的是识别姓名汉字以外的所有字符 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想也好判断。你参阅一下这个:http://ff.163.com/newflyff/gbk-list/看看你要判断的字符所在的区域。 //GBK汉字内码范围(不包括A1xx~A9xx的标点符号英文字母特殊符号等) //区码 ,位码 //81-A0 ,40-7E 80-FE //AA-AF ,40-7E 80-A0 //B0-D6 ,40-7E 80-FE //D7 ,40-7E 80-F9 //D8-F7 ,40-7E 80-FE //F8-FE ,40-7E 80-A0#include <windows.h>#include <stdio.h>int main() { const DWORD uWidth = 18 + 17 * 256, uHeight = 18 + 17 * 128; PBITMAPINFO pbmi = (PBITMAPINFO) LocalAlloc (LPTR, sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2); pbmi->bmiHeader.biSize = sizeof (BITMAPINFOHEADER); pbmi->bmiHeader.biWidth = uWidth; pbmi->bmiHeader.biHeight = uHeight; pbmi->bmiHeader.biPlanes = 1; pbmi->bmiHeader.biBitCount = 1; pbmi->bmiHeader.biSizeImage = ((uWidth + 31) & ~31) / 8 * uHeight; pbmi->bmiColors[0].rgbBlue = 0; pbmi->bmiColors[0].rgbGreen = 0; pbmi->bmiColors[0].rgbRed = 0; pbmi->bmiColors[1].rgbBlue = 255; pbmi->bmiColors[1].rgbGreen = 255; pbmi->bmiColors[1].rgbRed = 255; HDC hDC = CreateCompatibleDC (0); void * pvBits; HBITMAP hBitmap = CreateDIBSection (hDC, pbmi, 0, &pvBits, NULL, 0); SelectObject (hDC, hBitmap); HFONT hFont = CreateFont (16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "宋体"); SelectObject (hDC, hFont); BitBlt (hDC, 0, 0, uWidth, uHeight, NULL, 0, 0, WHITENESS); char c[4]; int i, j; for (i = 128; i < 256; i++) { sprintf (c, "%02X", i); TextOut (hDC, 1, (i - 127) * 17 + 1, c, 2); } for (j = 0; j < 256; j++) { sprintf (c, "%02X", j); TextOut (hDC, (j + 1)* 17 + 1, 1, c, 2); } for (i = 128; i < 256; i++) { for (j = 0; j < 256; j++) { c[0] = (char) i; c[1] = (char) j; TextOut (hDC, (j + 1) * 17 + 1, (i - 127) * 17 + 1, c, 2); } } for (i = 0; i < 130; i++) { MoveToEx (hDC, 0, i * 17, NULL); LineTo (hDC, uWidth, i * 17); } for (j = 0; j < 258; j++) { MoveToEx (hDC, j * 17, 0, NULL); LineTo (hDC, j * 17, uHeight); } BITMAPFILEHEADER bmfh; bmfh.bfType = *(PWORD) "BM"; bmfh.bfReserved1 = 0; bmfh.bfReserved2 = 0; bmfh.bfOffBits = sizeof (BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2; bmfh.bfSize = bmfh.bfOffBits + pbmi->bmiHeader.biSizeImage; HANDLE hFile = CreateFile ("goal.bmp", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0); if (hFile != INVALID_HANDLE_VALUE) { DWORD dwWritten; WriteFile (hFile, &bmfh, sizeof (BITMAPFILEHEADER), &dwWritten, NULL); WriteFile (hFile, pbmi, sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2, &dwWritten, NULL); WriteFile (hFile, pvBits, pbmi->bmiHeader.biSizeImage, &dwWritten, NULL); CloseHandle (hFile); } DeleteObject (hFont); DeleteObject (hBitmap); DeleteDC (hDC); LocalFree (pbmi); return 0;}看一下上面程序生成的goal.bmp文件。 VB读取Execl单元格出错 创建控制面板程序 关于ADO的对象的问题 怎样限制文本框中输入的数字范围 升星散分,并有一windows网络问题求教... ##如何在DIRLIST控件中加上滚动条?再现等待 我是新手!请个位大侠帮帮我解决一个小问题! 初学vb,请问两个问题: 挂钩函数 这个问题我解决好久了,但就是解决不了! 我知道您能帮我! 求Visual Basic 6.0繁体中文版 亲~问个打印机问题
你参阅一下这个:http://ff.163.com/newflyff/gbk-list/
看看你要判断的字符所在的区域。
//区码 ,位码
//81-A0 ,40-7E 80-FE
//AA-AF ,40-7E 80-A0
//B0-D6 ,40-7E 80-FE
//D7 ,40-7E 80-F9
//D8-F7 ,40-7E 80-FE
//F8-FE ,40-7E 80-A0
#include <windows.h>
#include <stdio.h>int main() {
const DWORD uWidth = 18 + 17 * 256, uHeight = 18 + 17 * 128; PBITMAPINFO pbmi = (PBITMAPINFO) LocalAlloc (LPTR, sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2);
pbmi->bmiHeader.biSize = sizeof (BITMAPINFOHEADER);
pbmi->bmiHeader.biWidth = uWidth;
pbmi->bmiHeader.biHeight = uHeight;
pbmi->bmiHeader.biPlanes = 1;
pbmi->bmiHeader.biBitCount = 1;
pbmi->bmiHeader.biSizeImage = ((uWidth + 31) & ~31) / 8 * uHeight;
pbmi->bmiColors[0].rgbBlue = 0;
pbmi->bmiColors[0].rgbGreen = 0;
pbmi->bmiColors[0].rgbRed = 0;
pbmi->bmiColors[1].rgbBlue = 255;
pbmi->bmiColors[1].rgbGreen = 255;
pbmi->bmiColors[1].rgbRed = 255; HDC hDC = CreateCompatibleDC (0);
void * pvBits;
HBITMAP hBitmap = CreateDIBSection (hDC, pbmi, 0, &pvBits, NULL, 0);
SelectObject (hDC, hBitmap);
HFONT hFont = CreateFont (16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "宋体");
SelectObject (hDC, hFont);
BitBlt (hDC, 0, 0, uWidth, uHeight, NULL, 0, 0, WHITENESS); char c[4];
int i, j;
for (i = 128; i < 256; i++) {
sprintf (c, "%02X", i);
TextOut (hDC, 1, (i - 127) * 17 + 1, c, 2);
}
for (j = 0; j < 256; j++) {
sprintf (c, "%02X", j);
TextOut (hDC, (j + 1)* 17 + 1, 1, c, 2);
}
for (i = 128; i < 256; i++) {
for (j = 0; j < 256; j++) {
c[0] = (char) i;
c[1] = (char) j;
TextOut (hDC, (j + 1) * 17 + 1, (i - 127) * 17 + 1, c, 2);
}
}
for (i = 0; i < 130; i++) {
MoveToEx (hDC, 0, i * 17, NULL);
LineTo (hDC, uWidth, i * 17);
}
for (j = 0; j < 258; j++) {
MoveToEx (hDC, j * 17, 0, NULL);
LineTo (hDC, j * 17, uHeight);
} BITMAPFILEHEADER bmfh;
bmfh.bfType = *(PWORD) "BM";
bmfh.bfReserved1 = 0;
bmfh.bfReserved2 = 0;
bmfh.bfOffBits = sizeof (BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2;
bmfh.bfSize = bmfh.bfOffBits + pbmi->bmiHeader.biSizeImage; HANDLE hFile = CreateFile ("goal.bmp", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
if (hFile != INVALID_HANDLE_VALUE) {
DWORD dwWritten;
WriteFile (hFile, &bmfh, sizeof (BITMAPFILEHEADER), &dwWritten, NULL);
WriteFile (hFile, pbmi, sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2, &dwWritten, NULL);
WriteFile (hFile, pvBits, pbmi->bmiHeader.biSizeImage, &dwWritten, NULL); CloseHandle (hFile);
} DeleteObject (hFont);
DeleteObject (hBitmap);
DeleteDC (hDC);
LocalFree (pbmi); return 0;
}看一下上面程序生成的goal.bmp文件。