DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: a12315
今日帖子: 53
在线用户: 10
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
女 ssyyp (ssyyp) ★☆☆☆☆ -
普通会员
2017/5/19 20:59:11
标题:
等长截取汉字字母数字混合字符串?请指点 浏览:1424
加入我的收藏
楼主: 我需要截取如下2条汉字字母数字混合的字符串(比如):
我爱delphi盒子1314
我注册盒子八年了

截取后:
我爱delphi盒
我注册盒子八

不知道通过怎样的方法处理?请指点,谢谢。
----------------------------------------------
-delphi仅仅是业余爱好,没有经过专业的学习,谢谢大家的热心帮助(* ̄︶ ̄)
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2017/5/19 22:44:24
1楼: 在画布上绘制这些文字,宋体,10号字。计算文字占用的宽度是否相等就可以了。
----------------------------------------------
武汉天气不好
作者:
女 ssyyp (ssyyp) ★☆☆☆☆ -
普通会员
2017/5/20 0:18:46
2楼: @dbyoung 计算宽度?

Image1.Canvas.Textout(0,0,LeftStr(s1, 12));//????? 用这个不行
----------------------------------------------
-delphi仅仅是业余爱好,没有经过专业的学习,谢谢大家的热心帮助(* ̄︶ ̄)
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2017/5/20 1:46:07
3楼: Canvas.TextWidth
----------------------------------------------
武汉天气不好
作者:
男 wg961423 (麦子仲肥) ★☆☆☆☆ -
盒子活跃会员
2017/5/20 11:45:08
4楼: 转成AnsiString,再SubString前12个字符
----------------------------------------------
-
作者:
男 lps (lps) ★☆☆☆☆ -
盒子活跃会员
2017/5/20 12:07:44
5楼: 等长这个术语我没有懂
是字符个数的话,楼主例子不对,宽度的另说
----------------------------------------------
-
作者:
女 ssyyp (ssyyp) ★☆☆☆☆ -
普通会员
2017/5/21 21:10:40
6楼: 严格意义上说是等宽。我可能表达不准确。
----------------------------------------------
-delphi仅仅是业余爱好,没有经过专业的学习,谢谢大家的热心帮助(* ̄︶ ̄)
作者:
男 hs_kill (lzl_17948876) ★☆☆☆☆ -
普通会员
2017/5/21 22:03:49
7楼: 你这个截取, 需要看显示用的是什么字体
系统字体分为等宽字体和比例字体, 对于等宽字体来说好办 半角字符(英文字母/标点等)和全角字符(中文 中文字符等)宽度比是固定1:2, 正好和ansi字符字节数相等, 所以你直接按ansi字节数去截取就好了

但是对于比例字体就不行了, 只能分析当前每个字符显示宽度然后去判断
比例字体, 如果是全中文还好, 英文和数字出现上下行无法对齐的情况很常见, 这时就看你需要怎么处理了

最常见的 MS Serif 是比例字体  MS Sans Serif是等宽字体
自己找个记事本试试就知道了
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
男 wk_knife (wk_knife) ★☆☆☆☆ -
盒子活跃会员
2017/5/22 10:37:02
8楼: 是字符个数等长度截取,还是等宽度截取(不考虑字符个数是否相同)
----------------------------------------------
-
作者:
男 wk_knife (wk_knife) ★☆☆☆☆ -
盒子活跃会员
2017/5/22 10:38:12
9楼: 即便等宽字体,像中文这类字符和ascii字符的宽度也是不一样的。
----------------------------------------------
-
作者:
男 zhoutler (苦行僧) ★☆☆☆☆ -
普通会员
2017/5/22 23:38:34
10楼: 不同的字符集,字体,显示的视觉长度的确不一样,需要mesuretext类似函数。
有些字体下,五个字母wwwww,和五个数字1,视觉长度明显不一样。
----------------------------------------------
-
作者:
男 xtsbx (海浪) ★☆☆☆☆ -
盒子活跃会员
2017/5/23 8:34:50
11楼: 关键是你想做什么?若是获取等长字符串就转换成ansistring字符串来截取;若是为了显示,就用drawtext在画布上输出,drawtext有个参数是输出区域,超出区域部分是不显示的
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/5/23 8:51:34
12楼: 楼主已死,有事烧香。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 yanse (颜色) ▲▲▲▲△ -
普通会员
2017/5/23 8:59:12
13楼: 看看都什么人,12楼的死全家了,有事烧纸
----------------------------------------------
-
作者:
男 a5824 (Return) ★☆☆☆☆ -
普通会员
2017/5/23 9:02:11
14楼: 12楼也太没素质了吧。至于这样咒人家吗?delphi的阵营不应该这样!
----------------------------------------------
-
作者:
男 testtset (testtset) ▲▲▲▲▲ -
普通会员
2017/5/23 9:30:52
15楼: 拿着无耻当个性的人
----------------------------------------------
在乌鸦掌控的世界里,洁白的羽毛是有罪的。
作者:
男 kencc2016 (小宇) ▲▲▲△△ -
普通会员
2017/5/23 22:19:07
16楼: 果然猜到12楼是这厮,整个论坛找不出第二个和这货一样的,有人生没人教
----------------------------------------------
弃坑Delphi
作者:
男 yuyiharold (羽三少) ★☆☆☆☆ -
普通会员
2017/5/24 23:37:02
17楼: 用python做,然后再用Delphi读回结果
----------------------------------------------
-
作者:
女 ssyyp (ssyyp) ★☆☆☆☆ -
普通会员
2017/5/25 21:21:41
18楼: 12楼的真的是一个极品,不知道用什么来形容了。

感谢其他好心人的帮助。
我的想法是把一个中文字母符号(全角半角都有)混合的字符串等宽比例截取。(前几行等宽,剩下的就是最后一行)
不好意思,业余编程,不常上网。
----------------------------------------------
-delphi仅仅是业余爱好,没有经过专业的学习,谢谢大家的热心帮助(* ̄︶ ̄)
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS