计算机世界的主页文章中为何汉字间有间隔,怎样轻易解决?(用Delphi?)(50分)

  • 主题发起人 主题发起人 Zhengxue
  • 开始时间 开始时间
有的输入法带有输入汉字加空格的功能, 输入的每一个汉字之间自动加一个空格, 如
果想用 Delphi 解决, 请参看有关输入法的讨论, 其中有一个CEditGB的示范程序,
演示了如何用户化输入法
 
你可能没有理解我的意思.

<计算机世界>http://www.computerworld.com.cn中的文章字与字之间
都有一个空格,我觉得怪怪的,不知用来干吗?好看吗? 我从哪里download
了一篇文章箱摘抄到我的一个档案里,因此想用程序把空格们删掉,
用delphi怎样做最简便?

那位大虾有妙招?
 
下面是我临时编的小程序,只能处理标准的文本文件,并且程序中没进行错误
检查,希望对你有些帮助:
//将一字符串中的空格去掉
function TrimSpaceChar(S:AnsiString):String;
var
NewStr:PChar; //新的字符串
CurrentCharIn,CurrentCharOut:PChar;//字符的指针
isGBCode:Boolean;
begin
GetMem(NewStr,StrLen(PChar(S)));
CurrentCharIn:=PChar(S);
CurrentCharOut:=PChar(NewStr);
isGBCode:=False;
while PBYTE(CurrentCharIn)^<>0 do
begin
//判断是否是中文字符
if (PBYTE(CurrentCharIn)^>$9F) and (PBYTE(CurrentCharIn)^<$FF) then
begin
isGBCode:=True;
PWORD(CurrentCharOut)^:=PWORD(CurrentCharIn)^;
Inc(CurrentCharOut,2);
Inc(CurrentCharIn,2);
end
else
begin
//如果上一个字是中文,空隔去掉,否则不用去掉
if (PBYTE(CurrentCharIn)^=$20) and isGBCode then
Inc(CurrentCharIn,1)
else
begin
//处理英文字符
isGBCode:=False;
PBYTE(CurrentCharOut)^:=PBYTE(CurrentCharIn)^;
Inc(CurrentCharOut,1);
Inc(CurrentCharIn,1);
end;
end;
end;
PBYTE(CurrentCharOut)^:=0;
result:=StrPas(NewStr);
FreeMem(NewStr);
end;
//转换一个文本文件
procedure ConvertFile(InFileName,OutFileName:TFileName);
var
FInHandle,FOutHandle:TextFile;
TmpStr:AnsiString;
begin
AssignFile(FInHandle,InFileName);
AssignFile(FOutHandle,OutFileName);
Reset(FInHandle);
ReWrite(FOutHandle);
while not EOF(FInHandle) do
begin
ReadLn(FInHandle,TmpStr);
WriteLn(FOutHandle,TrimSpaceChar(TmpStr));
end;
CloseFile(FInHandle);
CloseFile(FOutHandle);
end;
 
原因:

文字带有空格时,用浏览器看时,字符集不是汉字GB时,也能
看到汉字.

解决方法:将所有空格替换为空字符.
 
OK, the code is very good!
 
jiangtao的方法是最好的!不用什么CODE,那是程序员的通病
1、用NOTEPAD打开文件
2、查找-替换
3、在上面输入空格,下面什么也不输入
4、替换全部/全部
 
这次聚会刚说起这个事,居然有人提出来了,看来程序员的思维和别人就是不一样。

要达到这个目的还是jiangtao的方法最管用,当然,你获得的是HTML文本,那么,把他转换喂txt就可以了,很多程序都可以做的。
 
我想在这说几句,我想这个论坛存在的一个原因,是希望大家把编程的经验交流一
下,虽然我的水平不高,但能够同别人交换一下各自的所得,学习别人的经验,对我而言
是一件很愉快的事,尽管有的方法比较可笑,但可以知道自己错误与不足,那也是很有益
的事.
我觉得现在这个论坛倾向于慢慢变得象一个搜索站,什么什么可以找控件XXX,什么
什么可以见帮助,或直接把帮助copy过来,至于为什么,以及该怎么做,基本上都不说,
如果这是该论坛的目的,那我无话可说.
另外,我想到这里来的人是想学习如何用Delphi编程的,而不是想学如何使用
NotePad或Netscape的,也请大家看清楚提问者的问题再回答,不要仅仅为了分数.
 
老兄不要生气,BE HAPPY;)
我不是说你的程序不好,也不是想改变本论坛宗旨。
1、有许多朋友的确是为了提高DELPHI水平而来的,但是人有三急,谁也不能说不会
有一些困难让大家帮忙。
2、对程序员而言,有时换个思路思考问题是必要的,就想这个问题,如果纯粹是为了
方便阅读,那么的确不必写程序,如果为了提高,也可以在WORD中写个VBA,
在DELPHI中调用什么的;)
3、作为程序员,一定要学会看HELP,看/用别人的程序,如果没有这样的习惯,那
他绝对不是一个好的程序员!如果找不到,大家帮他找也是很正常的,如果帮助中
没有,大家可以讨论!

当然,老兄的程序的确很不错,分数加给老兄也是应该,GOOD LUCK
HAPPY AGAIN
 
只怕简单替换有问题.
如果文章中有有用的空格该怎么办? 如每一段文字开头的空格.

还是编一段程序把无用的空格去掉, 把有用的空格保留.

 
I'm sorry to give points so arbitrarily for I'm so tired.
 
I'm sorry to give points so arbitrarily for I'm so tired.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部