var s:string; i: integer; begin s:='掌声是多方收集d'; for i:=1 to length(s) do begin if ord(s[i])<128 then //0-127 为键盘值,大于127 的为汉字 begin showmessage(s[i]); end; end; end;
这样行不行? var str: WideString; begin str := '掌声是多方收集d'; if Length(str) * 2 > Length(AnsiString(str)) then 包含非汉字字符
procedure TForm1.Button1Click(Sender: TObject); var s:string; j:integer; begin s:='掌声是多方收集d'; for J :=1 to length(s) do if UpCase(s[j]) in ['A'..'Z'] then begin showmessage('含有字母'); break; end; end;
可用正则表达式: uses ComObj;procedure TForm1.Button1Click(Sender: TObject); const testStrings: array[0..4] of string = ('全汉字', '字母abc', '(标点)', '全角数字12', '外国语はのね'); var vRegExp: OleVariant; I: Integer; begin vRegExp := CreateOleObject('VBScript.RegExp'); // 创建正值对象 vRegExp.Pattern := '^[\u4e00-\u9fa5]+$'; // 样板表达式 vRegExp.Global := True; // 全局适用 for I := Low(testStrings) to High(testStrings) do begin if not vRegExp.Test(testStrings[I]) then begin ShowMessage(testStrings[I] + ' 非全汉字'); end; end; end;\u4e00-\u9fa5 --- 表示汉字在Unicode中的范围。
s:string;
i: integer;
begin
s:='掌声是多方收集d';
for i:=1 to length(s) do
begin
if ord(s[i])<128 then //0-127 为键盘值,大于127 的为汉字
begin
showmessage(s[i]);
end;
end;
end;
var
str: WideString;
begin
str := '掌声是多方收集d';
if Length(str) * 2 > Length(AnsiString(str)) then
包含非汉字字符
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
j:integer;
begin
s:='掌声是多方收集d';
for J :=1 to length(s) do
if UpCase(s[j]) in ['A'..'Z'] then begin
showmessage('含有字母');
break;
end;
end;
uses ComObj;procedure TForm1.Button1Click(Sender: TObject);
const
testStrings: array[0..4] of string =
('全汉字', '字母abc', '(标点)', '全角数字12', '外国语はのね');
var
vRegExp: OleVariant;
I: Integer;
begin
vRegExp := CreateOleObject('VBScript.RegExp'); // 创建正值对象
vRegExp.Pattern := '^[\u4e00-\u9fa5]+$'; // 样板表达式
vRegExp.Global := True; // 全局适用
for I := Low(testStrings) to High(testStrings) do
begin
if not vRegExp.Test(testStrings[I]) then
begin
ShowMessage(testStrings[I] + ' 非全汉字');
end;
end;
end;\u4e00-\u9fa5 --- 表示汉字在Unicode中的范围。
我试了可以找出非汉字哦
不过& 这个显示为空