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

jackieji 2003-12-12 03:17:09
狠急!!多谢!!我是从TMemo控件中取出的字符串。
其中,一个汉字占两个字节,一个英文字符占一个字节,回车占两个字节。
我现在打算按要求对其重新编排,所以必须要对每一个字符是什么类型进行判断才行。请那位大虾执教!!我对字符串操作这方面也不是很熟悉,多多指教!
怎样实现才好?
...全文
158 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
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码的问题

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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