TA的每日心情 | 慵懒 2025-11-24 10:46 |
|---|
管理员
- 积分
- 669
|
U0000202E
. Z G! i9 e( r7 B9 E今天在项目中遇到一个很有意思的事情,测试在编辑用户昵称的时候,不知道从哪里copy了一个特殊字符U0000202E,然后我们在label上面显示的时候就出问题了,本来应该是wind参加了活动,结果变成了wind动活了加参,当时我就懵逼了,后面断点调试,发现字符串为windU0000202E参加了活动。后面我在Google上搜索U0000202E,只搜到了两条结果
/ K8 o# G1 K4 ?* t2 vhttp://permalink.gmane.org/gmane.comp.lib.regexp.tre/39 https://github.com/nbjahan/launchbar-unisym/blob/master/src/2000-206f_general_punctuation.go! k0 r# |% x5 }1 X* L! E
* }" K- j3 I$ Q+ Q9 T: s
然后我把第一条链接里面的所提及用demo运行效果出来了。& y* Y( Y( A' p" W& }% D
- e: H: p. u h8 Z- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
* I/ e* u+ A: W& V% B - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
# b+ D4 |, B: t - if (!cell) {
4 @7 h5 v) B" N3 y - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
/ }7 s" \1 x% C) q9 ^% v% X - }' U9 _) _9 \: j/ ~' U' B4 w& r
- static NSArray *charArray = nil;
0 }0 A7 e" w: u9 B - if (!charArray) {# P: M- T1 A) D$ i# {0 Y1 c
- charArray = @[@"U0000200E", @"U0000200F", @"U0000200B", @"U0000202A", @"U0000202E", @"U00002060", @"U0000206A", @"U0000206F"];
( s* [2 ]; \# w9 y m3 K% |* h - }
# M: z! q) n0 E - if (indexPath.row < [charArray count]) {
8 }3 Y& c) d( S! E! K - NSString *text = [NSString stringWithFormat:@"%@+%@-%@", @(indexPath.row + 1), charArray[indexPath.row], @"一颗赛艇"];
) m0 r& }# R2 M9 \5 W7 y" X k - NSString *length = @(text.length).stringValue;
! F; H$ h8 S! P, t+ R - NSInteger index = [text rangeOfString:charArray[indexPath.row]].location;
: W1 ?9 ]. h2 X6 {$ M- ] - cell.textLabel.text = text;
" a& O1 V& {) S N - cell.detailTextLabel.text = [NSString stringWithFormat:@"length:%@ index:%@", length, @(index)];4 \% s) i% q9 k9 a% q
- }6 }3 z: y* y- E
- return cell;! e M5 O' `6 L3 h
- }
复制代码 ; e- h& L8 D2 p; _. a* d5 V( h7 E
- u6 ^8 [! v, z( T1 X
下面是第二个链接的东西,是一个数组,关于unicode码以及它的相关含义。
2 n/ j; O0 @# E. ~' l/ A' g3 V* l- func init() {6 |6 q' F# q+ ~( |1 i
6 F+ J. R! O% ?0 s- chars["02000"] = [][2]string{
1 \6 ?2 @7 I: u$ A% G- }' Q
. i$ P: i% _: m! y* [- // {"En Quad", "U00002000"},
8 D* {" `# A8 T. ]5 h) P' l - * j" n& {- V6 f8 ?+ f
- // {"Em Quad", "U00002001"},
+ Y+ i7 q* T; w2 Z3 s9 J
9 b! Z" F: f8 ]6 _4 E- // {"En Space", "U00002002"},/ v4 I2 W9 j2 t9 {
2 I5 x0 C- m1 ]/ p- // {"Em Space", "U00002003"},
Y7 Q( ~. Z( r' @9 V
6 Y3 `8 {8 Y( p6 Z _- // {"Three-Per-Em Space", "U00002004"},
# s4 p6 q! k2 k; _
: H5 [2 i A7 @9 L7 I- // {"Four-Per-Em Space", "U00002005"},
' _8 W, K2 @! i; {; ~, g0 v/ D - % P' ?- `9 n- @+ Y! g6 K
- // {"Six-Per-Em Space", "U00002006"},
n0 f9 |* B% ?% c
h+ x& t+ e; b. L2 S. y( `- // {"Figure Space", "U00002007"},2 S" e" U0 s1 O; D: h: z
4 P$ J& g- r! p, J+ D1 l- // {"Punctuation Space", "U00002008"},1 i9 N. N% q+ Y* u( P
- # R$ i8 I' M- e4 s6 W
- // {"Thin Space", "U00002009"},8 r1 S* [# p1 s% H
- 6 T R3 A* d- B N- r
- // {"Hair Space", "U0000200a"},' n4 Y# {! P9 U2 l
2 k; ?& C( S3 r# X8 y# _- // {"Zero Width Space", "U0000200b"},& T1 ~: `% A2 h1 C4 _; `9 p
. z6 |! b7 W# p t( L- // {"Zero Width Non-Joiner", "U0000200c"},
- M- e8 S6 g+ c+ p8 B5 O0 Z; _
: V" i/ N7 n. F, k- N4 m- // {"Zero Width Joiner", "U0000200d"},
3 G$ l( L; B# {! O* g5 ~: c4 @
0 g8 v$ u p" F- // {"Left-To-Right Mark", "U0000200e"},
4 B) u7 P8 R* p) U, N - - J' V, z, }: |# O1 }
- // {"Right-To-Left Mark", "U0000200f"},
; E& Z0 R6 |) k) K
`5 e2 E' t. t7 [& g, F5 \- {"Hyphen", "U00002010"},5 q& C2 [! q5 B/ G
+ U, L. C0 J& H! U) d- {"Non-Breaking Hyphen", "U00002011"},
, u# ~: L5 A, J' f: C r2 s
# W4 F5 G1 ?+ y8 Y) I9 B- {"Figure Dash", "U00002012"},2 h& D( x% X# e7 j/ Z; ~
- ) }6 v; B: y5 R h0 m4 M
- {"En Dash", "U00002013"},
' R: {! @! {- P' N - 2 D! L$ h* N$ ?- w. T# @# ?
- {"Em Dash", "U00002014"},
5 A) U" ]: I2 M4 i, c - 5 v! u" b) ^% V
- {"Horizontal Bar", "U00002015"},. Z# P F5 _# P* n
9 D$ Y. r- }% r" T" E; G8 q- {"Double Vertical Line", "U00002016"},
# B8 |! _" S! Z) v - 3 a. i4 ~. X1 ^1 Z
- {"Double Low Line", "U00002017"},- [# h4 ], j# ?7 o8 c1 K5 L% T" N
' e0 ?/ {5 ^: k- {"Left Single Quotation Mark", "U00002018"},
. N1 F" I( e6 o7 i% G! Q
& {. R9 U' h0 t2 w" s; \- {"Right Single Quotation Mark", "U00002019"},( _: z4 T3 V( h7 |) i( i( a
- 3 T7 F; n) I) z( t
- {"Single Low-9 Quotation Mark", "U0000201a"},/ H( ?0 c+ ^; A( v6 A1 ^1 M9 t
$ k" K2 W8 B, v- I0 v$ d/ ^9 T- {"Single High-Reversed-9 Quotation Mark", "U0000201b"},
% @( O% }' M7 p. {$ n" o# q - - m7 ]8 C; g& J
- {"Left Double Quotation Mark", "U0000201c"},
* C; R. y. o$ J/ ?' q, x - 4 f/ M& Y4 ~- w7 ]0 I) |) _% u
- {"Right Double Quotation Mark", "U0000201d"},& T; i4 x4 K Q
- . C$ T9 z/ t0 T( e: M q9 ^) j
- {"Double Low-9 Quotation Mark", "U0000201e"},
8 q3 O( Q& S. a - ) @2 G5 E1 R# o: `4 ?( m# ?; g
- {"Double High-Reversed-9 Quotation Mark", "U0000201f"},
* ~/ v4 O. R* f$ i1 Q) B
% G. x5 r/ p% b- T. ?, c- I3 [+ s5 U- {"Dagger", "U00002020"},7 B* r: `3 W# ]; i
1 `1 L: A( F: d& V) R; @- }7 v u- {"Double Dagger", "U00002021"},
]4 c# @" U* {) a; H5 q - 9 h V( u: U, q! l; c7 I' U9 K
- {"Bullet", "U00002022"},
3 v) f: o* L2 f! a - * e; W( q9 l1 d4 A3 S
- {"Triangular Bullet", "U00002023"},( q. d3 k; W: m. p. e
- 0 H1 E& Q# I6 h1 t$ @: s" m' p
- {"One Dot Leader", "U00002024"},
! I$ N# i4 z' u- x, Z+ | - , k( U( U; M% \2 t; \6 k: H0 p
- {"Two Dot Leader", "U00002025"},' [7 a y8 ~. J; u* N& y
- ) _) \8 I& z1 ^
- {"Horizontal Ellipsis", "U00002026"},0 g: o4 x9 J/ T) K) o9 `& {3 }6 o- j
- $ j( m' C' C9 u, \
- {"Hyphenation Point", "U00002027"},% U$ s9 f- z: K; r- q
3 N1 I8 [! V8 s- \8 m+ ]; b: C+ T! q- // {"Line Separator", "U00002028"},
1 ]: _1 o% C: C0 n) t6 k- F
% o7 |/ [' V3 C. _- // {"Paragraph Separator", "U00002029"},
: g5 a6 v8 N. N6 d y" p1 `/ a* B - " D& Y$ n5 Y6 C0 N
- // {"Left-To-Right Embedding", "U0000202a"},, [% E0 s+ L. \7 i8 G# B
- ) z% j- w A7 g$ I
- // {"Right-To-Left Embedding", "U0000202b"},
3 N6 w9 I" q' W - * [0 L/ c7 n% _$ G7 p
- // {"Pop Directional Formatting", "U0000202c"},
( X7 D7 I0 n( U; Z, `
+ @! r! Q. N; Z: I- // {"Left-To-Right Override", "U0000202d"}," H! J3 @& E9 F! [
) u$ _( T5 J% J, d- // {"Right-To-Left Override", "U0000202e"},/ T3 N+ K C: f6 t
- " j8 j' i* I/ m6 \
- // {"Narrow No-Break Space", "U0000202f"},
" Z! O: Z5 m7 O4 y& ~
& }8 y1 G: U, s9 w' Z- {"Per Mille Sign", "U00002030"},+ X, o' A0 y5 O' Y
( E/ q& O) e) c, T$ a) b. h- {"Per Ten Thousand Sign", "U00002031"},4 g" W, I8 b# _0 P
2 }. o' N2 A4 Y! Q- {"Prime", "U00002032"},9 ?# f4 p, X4 M6 A
/ u2 }% x$ K4 h! m% s' i& e- {"Double Prime", "U00002033"},& Y2 a% a9 \% ^! n- x$ M" ]% O& X$ P
( H1 h1 R! H6 p! d8 F% j- {"Triple Prime", "U00002034"},
7 j1 F; o2 n: B7 w - ! V/ y5 y2 @+ J7 F! y
- {"Reversed Prime", "U00002035"},
& M( @( I; `0 C7 s - " V+ U" K9 g' T5 J! ~+ Y
- {"Reversed Double Prime", "U00002036"},( B- }4 H( Y( W+ I
/ G1 o) y- X% M. i+ M/ \3 D2 i' E; j- {"Reversed Triple Prime", "U00002037"},
3 r$ W9 X$ a/ r
, o4 _4 l4 V$ u( _- {"Caret", "U00002038"},
' u+ S4 @3 v$ Q9 ^+ z2 t/ w7 a L; \ - , b5 E2 D$ k8 I
- {"Single Left-Pointing Angle Quotation Mark", "U00002039"},
1 e e5 b4 B# S - . C* u) Q7 ^, M' R- F9 x5 O9 r
- {"Single Right-Pointing Angle Quotation Mark", "U0000203a"},
/ o5 t+ F% S; ], f/ T! A# o- e3 `
! Q3 q. g+ h0 }0 f& X0 Q, n- {"Reference Mark", "U0000203b"},
( p! t7 y( j1 M, L2 B9 n; \ O3 O4 [
8 u+ U. `* E& q" z/ M- {"Double Exclamation Mark", "U0000203c"},
0 n f: l7 W% h$ U7 {5 W
$ z0 L! `% K; t" E6 t- {"Interrobang", "U0000203d"},& _6 r5 M( D! p
) b7 V) y9 d' s% g9 `- {"Overline", "U0000203e"},
7 o% y2 D; Y/ `. e
4 E3 d: w" r9 r6 H! C% G: G- {"Undertie", "U0000203f"},3 ~. l$ @; Q8 r2 ]3 m; b/ E
% y! v. T: O. _: q: Z- {"Character Tie", "U00002040"},
; k- ?. G1 J$ `: e4 @; b
2 q( a" |' _$ x/ r) C5 Q) x- {"Caret Insertion Point", "U00002041"},
9 n' h1 s( }. u" y) |
8 }$ }3 z2 i e, O- {"Asterism", "U00002042"},
7 ? {: O( H. z1 {7 B3 P7 {' ` - ) ]' c8 d' D4 H# J, K t
- {"Hyphen Bullet", "U00002043"},/ I# C9 i! v+ t$ J
- 7 D3 ]- w& y8 d4 K4 f1 a4 |& I$ w
- {"Fraction Slash", "U00002044"},
# ~0 G" B# K2 s1 b6 H7 R5 _ - 3 y! k3 l1 W& }: n$ w. D* @
- {"Left Square Bracket With Quill", "U00002045"},
- l) t; o- ~: X5 B
$ _8 N' W! z$ T1 x- {"Right Square Bracket With Quill", "U00002046"},
2 [6 n z; ]2 y, S) B - " _* u) {. L1 L- s
- {"Double Question Mark", "U00002047"},
G7 Q, S5 I: l! m; K8 w2 K
8 U! n% h5 d+ Y. v/ ]# s% }4 W- {"Question Exclamation Mark", "U00002048"}," E7 q ~" [6 X2 @2 b3 z
- & S# B9 l! @# ^- E" q1 g
- {"Exclamation Question Mark", "U00002049"},
" ]4 ]. Z( r0 ^3 ?/ L4 P* N - $ y4 ], G F8 v
- {"Tironian Sign Et", "U0000204a"},
) U( {2 c; R) Z9 A* |9 W, K - 9 {' O. L# o b3 a( {# @
- {"Reversed Pilcrow Sign", "U0000204b"},1 j5 A' \6 M0 L0 d. c
- - S& L" O7 j2 n f1 R4 R
- {"Black Leftwards Bullet", "U0000204c"},
& V" h; t( `, M4 Z: O9 p
: V* `7 v- _. ~, m- r- {"Black Rightwards Bullet", "U0000204d"},
* r1 Y2 Q% X- n8 y+ R* h - + \; y& q$ f4 c- }. w
- {"Low Asterisk", "U0000204e"},
* K7 B+ r% X% K0 B8 G - " q$ G8 [* P0 M' N5 m E
- {"Reversed Semicolon", "U0000204f"},
5 d, W9 J9 K1 g
m6 c8 F8 x1 z! j: ]) f. F- v5 ]- {"Close Up", "U00002050"},
0 G& G1 X+ h% W z% f7 ]5 f
0 C* ^( R( ] @5 o& V5 V. a- {"Two Asterisks Aligned Vertically", "U00002051"},% n8 `, T- c' Y5 l8 c0 v+ N
0 m' ^8 M4 H* V" ^& h- {"Commercial Minus Sign", "U00002052"},0 a2 D" k. { }& J
- 0 z# I. R0 u |6 H; x
- {"Swung Dash", "U00002053"},
6 l6 s% M3 {) P X! D$ `& h - % \, q; \" b8 ?6 S% v
- {"Inverted Undertie", "U00002054"},
1 z1 @& Z6 `! {, N! l - : ^$ o$ S+ I. ~ S( C
- {"Flower Punctuation Mark", "U00002055"},& @: U9 E" E& X
3 y3 I- O3 X! Z8 I7 F# G- {"Three Dot Punctuation", "U00002056"},0 K' I: }- z- o% M9 Y& r
- ; `' `6 Y+ `9 {8 @
- {"Quadruple Prime", "U00002057"},
4 W& n3 K- j: ?- l
. m I3 ], {. w; f# b- {"Four Dot Punctuation", "U00002058"},3 m* i4 v! s; D
. d; V( }- K+ y* `) m- {"Five Dot Punctuation", "U00002059"},& d; Y/ I1 P+ g P" ^! E
7 {2 p' f+ }! Z3 F# {- {"Two Dot Punctuation", "U0000205a"},2 N) X# t8 F$ V( Q/ N; {3 E/ e6 X
- h: G( @3 E8 Z- {"Four Dot Mark", "U0000205b"},& `0 u( v5 n. @/ k; R! n6 C
7 }" n2 F q/ b- {"Dotted Cross", "U0000205c"},. I* U7 M% T g* d) c* p2 j
0 x0 _# `4 q( v- {"Tricolon", "U0000205d"},
9 U5 g' _+ f* \
' p/ l: G' `& K, e. j* {7 t- {"Vertical Four Dots", "U0000205e"},
! L$ H' e: e U9 g) o5 L - / W& A' X H' b2 w9 \3 {. M
- // {"Medium Mathematical Space", "U0000205f"},
5 _" X% |- d {" a
+ E& A3 ~9 @3 @7 r# @5 ^' H. Y- // {"Word Joiner", "U00002060"},* H7 u7 V0 ^& }" h5 |- d
9 t' t) P$ ^- {2 @, i4 u- {"Function Application", "U00002061"},
# E; F- Q+ _) x2 m( Z: I0 l - ) e# k7 j& ], O5 g6 x2 e- ]& ~9 F( a
- {"Invisible Times", "U00002062"},8 t; I: t' m- A- c% B9 `: B$ _
- 9 J }3 g( g& ^9 L0 j1 }! V
- {"Invisible Separator", "U00002063"},! F5 W0 m; K, e/ \
- % m9 v7 v Q& Y2 Z
- {"Invisible Plus", "U00002064"},
, |, c! P) X! ^4 i - R( M0 H$ }6 i+ f) i
- // {"Left-To-Right Isolate", "U00002066"}, A) w5 j- f6 M2 H
- . P, s" O/ C" A, M4 s& q
- // {"Right-To-Left Isolate", "U00002067"},: l' v, U; f1 h0 r- v: ^5 U) \
0 [ }4 b5 n4 s- // {"First Strong Isolate", "U00002068"},: [( ~2 u9 ~6 Q* s ?" J# Z: \* N* U
% [3 l) |* {5 S$ D6 O5 d- // {"Pop Directional Isolate", "U00002069"},
7 p K, w/ |* r
4 s& v* h5 m' G5 [9 _( L$ P- // {"Inhibit Symmetric Swapping", "U0000206a"},! X+ q) j) N) W8 Y. w
$ M9 P4 E# U: k5 V- // {"Activate Symmetric Swapping", "U0000206b"},1 Q- x& h. w# K4 l
- % U# |( o5 g( m! y" P( i A6 w
- // {"Inhibit Arabic Form Shaping", "U0000206c"},- ]4 \# ^3 e; x- d: Z: N" O/ b6 K+ q) \" A
- 4 B! H7 A9 r. ^0 c6 O
- // {"Activate Arabic Form Shaping", "U0000206d"},
+ k% n; i. c6 w7 l# p1 k - # H( S/ P; A; V* t
- // {"National Digit Shapes", "U0000206e"},. R N; R* w& ]3 G$ t
- # t8 F5 U! B4 B% S& D5 s
- }
\) B, r4 g8 u) z- k4 N - ( r7 u$ X) h' L' f( S9 A
- }
复制代码
1 \9 a* Q8 b, [ {平常反转一个字符串的时候,我是将它一个一个字符的处理) H" a; e, D0 N! V. d& V- `
- NSString *string = @"一颗赛特123";
$ `7 {( W, Q: ?0 N9 n4 O1 b7 N5 R - NSLog(@"string1:%@",string);- c! d) q' F# d& |( J
- NSMutableString *reverseString = [@"" mutableCopy];
+ X- \1 Z$ P4 w1 C$ s - for (NSInteger i = (string.length - 1); i > -1; i--) {# c7 z7 w; ]0 I2 I
- [reverseString appendString:[NSString stringWithFormat:@"%@", [string substringWithRange:NSMakeRange(i, 1)]]];! Y6 P4 B; B6 Z: R4 \; `' H
- }5 L* l# A; @8 ~9 R b; [
- NSLog(@"reverseString:%@",reverseString);: B' F5 y7 {" s5 L" o
- : _- A& o" i K! H' d
- // string1:一颗赛特123
+ c) ]6 ^7 |: e; p7 e/ I7 j/ A# u - // reverseString:321特赛颗一
复制代码 & L5 L7 a6 c+ p; e3 N) U
那现在就可以这样做了
- b0 m$ Z/ l" a9 v) f) r& |7 e( E- NSString *string = @"一颗赛特123";
. S- s9 c8 _ C6 Z6 l1 h9 R9 w - NSLog(@"string1:%@",string);. @6 J* ^3 [1 f+ O, F
- NSString *tmpString = [NSString stringWithFormat:@"U0000202E%@",string];) t, _- B$ l4 H3 ]/ [
- NSString *reverseString = [tmpString substringFromIndex:1]; W2 Z" I/ \8 v% m2 L" ?. @
- NSLog(@"tmpString:%@ reverseString:%@",tmpString,reverseString);" t) |* g* X9 Q) S- V) K b% ?
- " S6 P1 Z4 H H @ A3 T
- // string1:一颗赛特1238 Z! P* r0 e! @* P- N; F8 M
- // tmpString:321特赛颗一
: r2 n1 L: v) l0 N; i% Q& { - // reverseString:一颗赛特123
复制代码
0 i* _: C0 F8 _ `3 I# k1 |8 n7 z: }好吧,字符串里面必须要包含U0000202E字符,实际项目中如果需要计算长度的话,那这样子做是行不通的。
* ^# G9 `' p9 i7 y
0 n. u( K" \3 p这种Unicode编码有的时候还是挺有用的,最近在做群聊@功能就用到了 特殊空格字符(听说微信就是这么做的)。 p$ o( O/ n( v) L% X2 {9 W" @) G
7 Z9 V$ x, g- \ m原文链接:http://joakimliu.github.io/2016/06/03/%E4%B8%80%E4%BA%9B%E6%9C%89%E8%B6%A3%E7%9A%84%E4%BA%8B/ |
|