|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
ssyyp (ssyyp) |
★☆☆☆☆ |
-
|
普通会员 |
|
2017/5/19 20:59:11 |
标题: |
等长截取汉字字母数字混合字符串?请指点 |
浏览:1424 |
|
加入我的收藏 |
楼主: |
我需要截取如下2条汉字字母数字混合的字符串(比如): 我爱delphi盒子1314 我注册盒子八年了
截取后: 我爱delphi盒 我注册盒子八
不知道通过怎样的方法处理?请指点,谢谢。
----------------------------------------------
-delphi仅仅是业余爱好,没有经过专业的学习,谢谢大家的热心帮助(* ̄︶ ̄) |
作者: |
|
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仅仅是业余爱好,没有经过专业的学习,谢谢大家的热心帮助(* ̄︶ ̄)
|
作者: |
|
2017/5/20 1:46:07 |
3楼: |
Canvas.TextWidth
----------------------------------------------
武汉天气不好
|
作者: |
|
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/
|
作者: |
|
2017/5/22 10:37:02 |
8楼: |
是字符个数等长度截取,还是等宽度截取(不考虑字符个数是否相同)
----------------------------------------------
-
|
作者: |
|
2017/5/22 10:38:12 |
9楼: |
即便等宽字体,像中文这类字符和ascii字符的宽度也是不一样的。
----------------------------------------------
-
|
作者: |
|
2017/5/22 23:38:34 |
10楼: |
不同的字符集,字体,显示的视觉长度的确不一样,需要mesuretext类似函数。 有些字体下,五个字母wwwww,和五个数字1,视觉长度明显不一样。
----------------------------------------------
-
|
作者: |
xtsbx (海浪) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2017/5/23 8:34:50 |
11楼: |
关键是你想做什么?若是获取等长字符串就转换成ansistring字符串来截取;若是为了显示,就用drawtext在画布上输出,drawtext有个参数是输出区域,超出区域部分是不显示的
----------------------------------------------
-
|
作者: |
|
2017/5/23 8:51:34 |
12楼: |
楼主已死,有事烧香。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2017/5/23 8:59:12 |
13楼: |
看看都什么人,12楼的死全家了,有事烧纸
----------------------------------------------
-
|
作者: |
a5824 (Return) |
★☆☆☆☆ |
-
|
普通会员 |
|
2017/5/23 9:02:11 |
14楼: |
12楼也太没素质了吧。至于这样咒人家吗?delphi的阵营不应该这样!
----------------------------------------------
-
|
作者: |
|
2017/5/23 9:30:52 |
15楼: |
拿着无耻当个性的人
----------------------------------------------
|
作者: |
|
2017/5/23 22:19:07 |
16楼: |
果然猜到12楼是这厮,整个论坛找不出第二个和这货一样的,有人生没人教
----------------------------------------------
弃坑Delphi
|
作者: |
|
2017/5/24 23:37:02 |
17楼: |
用python做,然后再用Delphi读回结果
----------------------------------------------
-
|
作者: |
ssyyp (ssyyp) |
★☆☆☆☆ |
-
|
普通会员 |
|
2017/5/25 21:21:41 |
18楼: |
12楼的真的是一个极品,不知道用什么来形容了。
感谢其他好心人的帮助。 我的想法是把一个中文字母符号(全角半角都有)混合的字符串等宽比例截取。(前几行等宽,剩下的就是最后一行) 不好意思,业余编程,不常上网。
----------------------------------------------
-delphi仅仅是业余爱好,没有经过专业的学习,谢谢大家的热心帮助(* ̄︶ ̄)
|
|