如何去掉字符串中的 英文 和 标点符号(包括全角的标点符号) ??

fsqman 2004-10-24 09:42:29
如何去掉字符串中的 英文 和 标点符号(包括全角的标点符号 )
例如:

var

str:widestring;


str:=' 广 gd 东 。。@@@ 省';


想得到的结果如下:


'广东省'


...全文
511 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fsqman 2004-10-24
  • 打赏
  • 举报
回复
drift1981(一包香烟,一把吉他,浪迹天涯) 你的代码不能去掉全角的标点符号
hottey 2004-10-24
  • 打赏
  • 举报
回复
for i:=1 to length(s) do
drift1981 2004-10-24
  • 打赏
  • 举报
回复
var s,t : string;
i : integer;
begin
s :=' 广 gd 东..@@@ 省';
for i:=0 to length(s) do
begin
if (ord(s[i])>128) then t:=t+s[i];
end;
showmessage(t);
end;
drift1981 2004-10-24
  • 打赏
  • 举报
回复
楼上的名字应该为
hottey(孤独的探索者)(我是一强人)
hottey 2004-10-24
  • 打赏
  • 举报
回复
符号对应表:
, 'a3ac'
。 'a1a3'
? 'a3bf'
; 'a3bb'
: 'a3ba'
‘ 'a1af'
“ 'a1b1'

//CharIsSign判断是否为上述全角标点符号
hottey 2004-10-24
  • 打赏
  • 举报
回复
//我没有好的办法,只有这个,呵呵!
type
TChnChar = string[4];

var
Sign: array [1..7] of String = ('a3ac','a1a3','a3bf','a3bb','a3ba','a1af','a1b1');

function CharIsSign(Ch: TChnChar): Boolean;
var
i: integer;
begin
Result := False;
for i:=1 to 7 do
if Ch = Sign[i] then
begin
Result := True;
Exit;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
T: String;
Chn: TChnChar;
i: integer;
begin
S :=' hottey,你好吗”?';
T := '';
i := 1;
while i <= Length(S) do
begin
if (Ord(S[i]) > 128) then
begin
Chn := LowerCase(IntToHex(Ord(S[i]), 2) + IntToHex(Ord(S[i+1]), 2));
if CharIsSign(Chn) then
begin
Inc(i, 2);
Continue;
end else
T := T + S[i];
end;
Inc(i);
end;
ShowMessage(T);
end;

//运行后得出结果: 你好吗

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧