怎样判断字符串中的某一个字符是汉字还是占一个字节的字符,或者回车??在线求助!!

jackieji 2003-12-12 03:17:09
狠急!!多谢!!我是从TMemo控件中取出的字符串。
其中,一个汉字占两个字节,一个英文字符占一个字节,回车占两个字节。
我现在打算按要求对其重新编排,所以必须要对每一个字符是什么类型进行判断才行。请那位大虾执教!!我对字符串操作这方面也不是很熟悉,多多指教!
怎样实现才好?
...全文
124 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jackieji 2003-12-12
#13#10?
为什么
Memo1.Text := 'asdasd' + #13#10 + 'asdasd';
没有显示换行呢?显示了两个空格???
  • 打赏
  • 举报
回复
flyinwuhan 2003-12-12
回车不是#13,而是#13#10两个字符。
同意 wangl() 的。
  • 打赏
  • 举报
回复
yang_113 2003-12-12
在windows中回车是两个字符#13#10
  • 打赏
  • 举报
回复
jackieji 2003-12-12
那在widestring里面判断某一个字符是否是回车怎么实现?? 感觉#13在Tmemo中不起作用,我想从Tmemo导出的回车字符也不会为#13吧。
还有怎样任意读取字符串中的某一个字符?如何判断到了字符串的结尾
  • 打赏
  • 举报
回复
anh 2003-12-12
http://expert.csdn.net/Expert/topic/2440/2440518.xml?temp=.4050867
http://expert.csdn.net/Expert/topic/2365/2365691.xml?temp=.1057093
http://expert.csdn.net/Expert/topic/2324/2324672.xml?temp=.884762
http://expert.csdn.net/Expert/topic/2295/2295888.xml?temp=.9960443
http://expert.csdn.net/Expert/topic/2055/2055563.xml?temp=.842251
http://expert.csdn.net/Expert/topic/2295/2295888.xml?temp=.455456
  • 打赏
  • 举报
回复
wangl 2003-12-12
zzh26(瞌睡) 说得对,用ByteType函数。我的错误就是用它解决的。
我还写了个简单的函数:
function GetVolidStr(const Value: String): String;
var
ResultStr : String;
begin
if Length(Value) > 0 then
begin
if ByteType(Value, Length(Value)) = mbLeadByte then
ResultStr := Copy(Value, 1, Length(Value)-1)
else
ResultStr := Value;
end
else ResultStr := '';
Result := ResultStr;
end;
你只需在调用GetVolidStr函数时,传你可能出错的字符串即可。
  • 打赏
  • 举报
回复
adminis 2003-12-12
跟String一样用,只不过WideString占两个字节罢了!
  • 打赏
  • 举报
回复
jackieji 2003-12-12
to tlihui(阿南) :
只是靠判断ASCII码值那就会死人地,一个汉字两个ASCII码值,我怎么知道它是英文字副还是应该组合在一起呢
  • 打赏
  • 举报
回复
zzh26 2003-12-12
var ans : AnsiString;
wis : WideString;
Begin
wis := WideString( ans );
End;

  • 打赏
  • 举报
回复
jackieji 2003-12-12
在TMemo.Text := 'sdfdf' + #13 + '234234';这个#13在TMemo显示为空格而不是回车,是不是它的编码也和#13对应的不一样了,那我怎么判断阿?
  • 打赏
  • 举报
回复
jackieji 2003-12-12
WideString都怎么使用阿?有哪些可用的方法?计算长度,插入字符,,,能说详细些马??
  • 打赏
  • 举报
回复
tlihui 2003-12-12
ASCII码值
  • 打赏
  • 举报
回复
fengyvn 2003-12-12
回车是#13
  • 打赏
  • 举报
回复
zzh26 2003-12-12
function ByteType(const S: string; Index: Integer): TMbcsByteType;

IsDBCSLeadByte

告诉你一个非常有用的函数。

bytetype 它可以判断一个字符串中,某个 Char 是单个字母,还是双字节的前一位或

后一位。

mbSingleByte 单字母

mbLeadByte 双字节第一位

mbTrailByte 双字节第二位
  • 打赏
  • 举报
回复
crapex 2003-12-12
可以使用WideString,就不会出现汉字被分成两个ASCII码的问题
  • 打赏
  • 举报
回复
相关推荐
发帖
Delphi
加入

5065

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2003-12-12 03:17
社区公告
暂无公告