Blue
Red
Green
Orange
Voilet
Slate
Dark

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

  • 主题发起人 Zhengxue
  • 开始时间
H

huizhang

Unregistered / Unconfirmed
GUEST, unregistred user!
有的输入法带有输入汉字加空格的功能, 输入的每一个汉字之间自动加一个空格, 如
果想用 Delphi 解决, 请参看有关输入法的讨论, 其中有一个CEditGB的示范程序,
演示了如何用户化输入法
 
Z

Zhengxue

Unregistered / Unconfirmed
GUEST, unregistred user!
你可能没有理解我的意思.

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

那位大虾有妙招?
 
O

O_O

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是我临时编的小程序,只能处理标准的文本文件,并且程序中没进行错误
检查,希望对你有些帮助:
//将一字符串中的空格去掉
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;
 
J

jiangtao

Unregistered / Unconfirmed
GUEST, unregistred user!
原因:

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

解决方法:将所有空格替换为空字符.
 
Z

Zhengxue

Unregistered / Unconfirmed
GUEST, unregistred user!
OK, the code is very good!
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
jiangtao的方法是最好的!不用什么CODE,那是程序员的通病
1、用NOTEPAD打开文件
2、查找-替换
3、在上面输入空格,下面什么也不输入
4、替换全部/全部
 
D

DNChen

Unregistered / Unconfirmed
GUEST, unregistred user!
这次聚会刚说起这个事,居然有人提出来了,看来程序员的思维和别人就是不一样。

要达到这个目的还是jiangtao的方法最管用,当然,你获得的是HTML文本,那么,把他转换喂txt就可以了,很多程序都可以做的。
 
O

O_O

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在这说几句,我想这个论坛存在的一个原因,是希望大家把编程的经验交流一
下,虽然我的水平不高,但能够同别人交换一下各自的所得,学习别人的经验,对我而言
是一件很愉快的事,尽管有的方法比较可笑,但可以知道自己错误与不足,那也是很有益
的事.
我觉得现在这个论坛倾向于慢慢变得象一个搜索站,什么什么可以找控件XXX,什么
什么可以见帮助,或直接把帮助copy过来,至于为什么,以及该怎么做,基本上都不说,
如果这是该论坛的目的,那我无话可说.
另外,我想到这里来的人是想学习如何用Delphi编程的,而不是想学如何使用
NotePad或Netscape的,也请大家看清楚提问者的问题再回答,不要仅仅为了分数.
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
老兄不要生气,BE HAPPY;)
我不是说你的程序不好,也不是想改变本论坛宗旨。
1、有许多朋友的确是为了提高DELPHI水平而来的,但是人有三急,谁也不能说不会
有一些困难让大家帮忙。
2、对程序员而言,有时换个思路思考问题是必要的,就想这个问题,如果纯粹是为了
方便阅读,那么的确不必写程序,如果为了提高,也可以在WORD中写个VBA,
在DELPHI中调用什么的;)
3、作为程序员,一定要学会看HELP,看/用别人的程序,如果没有这样的习惯,那
他绝对不是一个好的程序员!如果找不到,大家帮他找也是很正常的,如果帮助中
没有,大家可以讨论!

当然,老兄的程序的确很不错,分数加给老兄也是应该,GOOD LUCK
HAPPY AGAIN
 
D

doubt

Unregistered / Unconfirmed
GUEST, unregistred user!
只怕简单替换有问题.
如果文章中有有用的空格该怎么办? 如每一段文字开头的空格.

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

 
P

pegasus

Unregistered / Unconfirmed
GUEST, unregistred user!
I'm sorry to give points so arbitrarily for I'm so tired.
 
P

pegasus

Unregistered / Unconfirmed
GUEST, unregistred user!
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
顶部 底部