Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2791|回复: 1

新的问题又来了!这次是正则匹配全角空格

[复制链接]

该用户从未签到

发表于 2012-11-23 17:26:35 | 显示全部楼层 |阅读模式
先贴上代码:
  1. procedure TForm1.Button3Click(Sender: TObject);
  2. var
  3.   RegExprObj:TRegExpr;
  4.   sString:TStringList;
  5.   i:integer;
  6. begin
  7.   memo1.Clear;
  8.   memo1.PasteFromClipboard;
  9.   if memo1.Text<> '' then
  10.   begin
  11.     try
  12.       RegExprObj:=TRegExpr.Create;
  13.       sString:=TStringList.Create;
  14.       RegExprObj.Expression:='^\s*|\s*$|^';//设置正则表达式
  15.       for i:=0 to memo1.Lines.Count-1 do
  16.       begin
  17.         sString.add(RegExprObj.Replace(memo1.Lines.Strings[i],'',false));
  18.       end;
  19.       memo1.Clear;
  20.       memo1.Text:=sString.Text;
  21.     finally
  22.       RegExprObj.Free;
  23.       sString.Free;
  24.     end;
  25.   end;
  26. end;
复制代码
程序要实现的目标是通过正则表达式过滤Memo1控件中每一行的空白字符。

半角下的制表符、空格用上面的正则表达式都能过滤了,惟独剩下全角的空格没有办法过滤。
之前用Delphi实现的时候,完整的正则表达式是:'^\s*|\s*$|^ '
也就是说只要在Delphi中直接输入全角空格' ',就可以在正则表达式中使用了。在Lazarus中却不行,切换到全角,一按空格,光标就不知道跳到哪里去,从其他地方复制全角粘贴也不行!

求解答啊!
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2012-11-24 10:17:53 | 显示全部楼层
改了正则表达式,另外要在其他编辑器里打开程序的pas文件,用其他程序来输入全角空格:' '!

新的正则是:'^[\\s( )]*|[\\s( )]*$'


正在开发一个小程序,杀猪刀,主要是为了方便网编转载内容时方便编辑!


另外有一个小问题是,Memo控件里如何统计汉字字数?
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-8-28 02:50 , Processed in 0.095431 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表