1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.api.util;
21
22
23
24
25
26
27
28 public final class Chars
29 {
30
31 private static final boolean[] ALPHA =
32 {
33 false, false, false, false, false, false, false, false,
34 false, false, false, false, false, false, false, false,
35 false, false, false, false, false, false, false, false,
36 false, false, false, false, false, false, false, false,
37 false, false, false, false, false, false, false, false,
38 false, false, false, false, false, false, false, false,
39 false, false, false, false, false, false, false, false,
40 false, false, false, false, false, false, false, false,
41 false, true, true, true, true, true, true, true,
42 true, true, true, true, true, true, true, true,
43 true, true, true, true, true, true, true, true,
44 true, true, true, false, false, false, false, false,
45 false, true, true, true, true, true, true, true,
46 true, true, true, true, true, true, true, true,
47 true, true, true, true, true, true, true, true,
48 true, true, true, false, false, false, false, false
49 };
50
51
52 private static final boolean[] ALPHA_LOWER_CASE =
53 {
54 false, false, false, false, false, false, false, false,
55 false, false, false, false, false, false, false, false,
56 false, false, false, false, false, false, false, false,
57 false, false, false, false, false, false, false, false,
58 false, false, false, false, false, false, false, false,
59 false, false, false, false, false, false, false, false,
60 false, false, false, false, false, false, false, false,
61 false, false, false, false, false, false, false, false,
62 false, false, false, false, false, false, false, false,
63 false, false, false, false, false, false, false, false,
64 false, false, false, false, false, false, false, false,
65 false, false, false, false, false, false, false, false,
66 false, true, true, true, true, true, true, true,
67 true, true, true, true, true, true, true, true,
68 true, true, true, true, true, true, true, true,
69 true, true, true, false, false, false, false, false
70 };
71
72
73 private static final boolean[] ALPHA_UPPER_CASE =
74 {
75 false, false, false, false, false, false, false, false,
76 false, false, false, false, false, false, false, false,
77 false, false, false, false, false, false, false, false,
78 false, false, false, false, false, false, false, false,
79 false, false, false, false, false, false, false, false,
80 false, false, false, false, false, false, false, false,
81 false, false, false, false, false, false, false, false,
82 false, false, false, false, false, false, false, false,
83 false, true, true, true, true, true, true, true,
84 true, true, true, true, true, true, true, true,
85 true, true, true, true, true, true, true, true,
86 true, true, true, false, false, false, false, false,
87 false, false, false, false, false, false, false, false,
88 false, false, false, false, false, false, false, false,
89 false, false, false, false, false, false, false, false,
90 false, false, false, false, false, false, false, false,
91 };
92
93
94 private static final boolean[] ALPHA_DIGIT =
95 {
96 false, false, false, false, false, false, false, false,
97 false, false, false, false, false, false, false, false,
98 false, false, false, false, false, false, false, false,
99 false, false, false, false, false, false, false, false,
100 false, false, false, false, false, false, false, false,
101 false, false, false, false, false, false, false, false,
102 true, true, true, true, true, true, true, true,
103 true, true, false, false, false, false, false, false,
104 false, true, true, true, true, true, true, true,
105 true, true, true, true, true, true, true, true,
106 true, true, true, true, true, true, true, true,
107 true, true, true, false, false, false, false, false,
108 false, true, true, true, true, true, true, true,
109 true, true, true, true, true, true, true, true,
110 true, true, true, true, true, true, true, true,
111 true, true, true, false, false, false, false, false
112 };
113
114
115 private static final boolean[] CHAR =
116 {
117 false, false, false, false, false, false, false, false,
118 false, false, false, false, false, false, false, false,
119 false, false, false, false, false, false, false, false,
120 false, false, false, false, false, false, false, false,
121 false, false, false, false, false, false, false, false,
122 false, false, false, false, false, true, false, false,
123 true, true, true, true, true, true, true, true,
124 true, true, false, false, false, false, false, false,
125 false, true, true, true, true, true, true, true,
126 true, true, true, true, true, true, true, true,
127 true, true, true, true, true, true, true, true,
128 true, true, true, false, false, false, false, false,
129 false, true, true, true, true, true, true, true,
130 true, true, true, true, true, true, true, true,
131 true, true, true, true, true, true, true, true,
132 true, true, true, false, false, false, false, false
133 };
134
135
136 private static final boolean[] DIGIT =
137 {
138 false, false, false, false, false, false, false, false,
139 false, false, false, false, false, false, false, false,
140 false, false, false, false, false, false, false, false,
141 false, false, false, false, false, false, false, false,
142 false, false, false, false, false, false, false, false,
143 false, false, false, false, false, false, false, false,
144 true, true, true, true, true, true, true, true,
145 true, true, false, false, false, false, false, false,
146 false, false, false, false, false, false, false, false,
147 false, false, false, false, false, false, false, false,
148 false, false, false, false, false, false, false, false,
149 false, false, false, false, false, false, false, false,
150 false, false, false, false, false, false, false, false,
151 false, false, false, false, false, false, false, false,
152 false, false, false, false, false, false, false, false,
153 false, false, false, false, false, false, false, false
154 };
155
156
157 private static final boolean[] HEX =
158 {
159 false, false, false, false, false, false, false, false,
160 false, false, false, false, false, false, false, false,
161 false, false, false, false, false, false, false, false,
162 false, false, false, false, false, false, false, false,
163 false, false, false, false, false, false, false, false,
164 false, false, false, false, false, false, false, false,
165 true, true, true, true, true, true, true, true,
166 true, true, false, false, false, false, false, false,
167 false, true, true, true, true, true, true, false,
168 false, false, false, false, false, false, false, false,
169 false, false, false, false, false, false, false, false,
170 false, false, false, false, false, false, false, false,
171 false, true, true, true, true, true, true, false,
172 false, false, false, false, false, false, false, false,
173 false, false, false, false, false, false, false, false,
174 false, false, false, false, false, false, false, false
175 };
176
177
178 private Chars()
179 {
180 }
181
182
183
184
185
186
187
188
189
190
191
192 public static boolean isCharASCII( char[] chars, int index, char car )
193 {
194 if ( ( chars == null ) || ( chars.length == 0 ) || ( index < 0 ) || ( index >= chars.length ) )
195 {
196 return false;
197 }
198 else
199 {
200 return chars[index] == car;
201 }
202 }
203
204
205
206
207
208
209
210
211
212
213
214
215 public static boolean isCharASCII( String string, int index, char car )
216 {
217 if ( string == null )
218 {
219 return false;
220 }
221
222 int length = string.length();
223
224 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
225 {
226 return false;
227 }
228 else
229 {
230 return string.charAt( index ) == car;
231 }
232 }
233
234
235
236
237
238
239
240
241
242
243
244
245 public static boolean isICharASCII( String string, int index, char car )
246 {
247 if ( string == null )
248 {
249 return false;
250 }
251
252 int length = string.length();
253
254 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
255 {
256 return false;
257 }
258 else
259 {
260 return ( ( string.charAt( index ) | 0x20 ) & car ) == car;
261 }
262 }
263
264
265
266
267
268
269
270
271
272
273
274
275 public static boolean isICharASCII( byte[] bytes, int index, char car )
276 {
277 if ( bytes == null )
278 {
279 return false;
280 }
281
282 int length = bytes.length;
283
284 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
285 {
286 return false;
287 }
288 else
289 {
290 return ( ( bytes[index] | 0x20 ) & car ) == car;
291 }
292 }
293
294
295
296
297
298
299
300
301
302
303
304 public static boolean isAlpha( byte c )
305 {
306 return ( c > 0 ) && ( c <= 127 ) && ALPHA[c];
307 }
308
309
310
311
312
313
314
315
316
317
318
319 public static boolean isAlpha( char c )
320 {
321 return ( c > 0 ) && ( c <= 127 ) && ALPHA[c];
322 }
323
324
325
326
327
328
329
330
331
332
333
334 public static boolean isAlphaASCII( byte[] bytes, int index )
335 {
336 if ( ( bytes == null ) || ( bytes.length == 0 ) || ( index < 0 ) || ( index >= bytes.length ) )
337 {
338 return false;
339 }
340 else
341 {
342 byte c = bytes[index];
343
344 return ( ( c | 0x7F ) == 0x7F ) && ALPHA[c];
345 }
346 }
347
348
349
350
351
352
353
354
355
356
357
358 public static boolean isAlphaASCII( char[] chars, int index )
359 {
360 if ( ( chars == null ) || ( chars.length == 0 ) || ( index < 0 ) || ( index >= chars.length ) )
361 {
362 return false;
363 }
364 else
365 {
366 char c = chars[index];
367
368 return ( ( c | 0x007F ) == 0x007F ) && ALPHA[c];
369 }
370 }
371
372
373
374
375
376
377
378
379
380
381
382 public static boolean isAlphaASCII( String string, int index )
383 {
384 if ( string == null )
385 {
386 return false;
387 }
388
389 int length = string.length();
390
391 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
392 {
393 return false;
394 }
395 else
396 {
397 char c = string.charAt( index );
398
399 return ( ( c | 0x007F ) == 0x007F ) && ALPHA[c];
400 }
401 }
402
403
404
405
406
407
408
409
410
411
412
413 public static boolean isAlphaLowercaseASCII( String string, int index )
414 {
415 if ( string == null )
416 {
417 return false;
418 }
419
420 int length = string.length();
421
422 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
423 {
424 return false;
425 }
426 else
427 {
428 char c = string.charAt( index );
429
430 return ( ( c | 0x007F ) == 0x007F ) && ALPHA_LOWER_CASE[c];
431 }
432 }
433
434
435
436
437
438
439
440
441
442
443
444 public static boolean isAlphaUppercaseASCII( String string, int index )
445 {
446 if ( string == null )
447 {
448 return false;
449 }
450
451 int length = string.length();
452
453 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
454 {
455 return false;
456 }
457 else
458 {
459 char c = string.charAt( index );
460
461 return ( c <= 127 ) && ALPHA_UPPER_CASE[c];
462 }
463 }
464
465
466
467
468
469
470
471
472
473
474
475 public static boolean isAlphaDigit( String string, int index )
476 {
477 if ( string == null )
478 {
479 return false;
480 }
481
482 int length = string.length();
483
484 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
485 {
486 return false;
487 }
488 else
489 {
490 char c = string.charAt( index );
491
492 return ( c <= 127 ) && ALPHA_DIGIT[c];
493 }
494 }
495
496
497
498
499
500
501
502
503
504
505 public static boolean isAlphaDigitMinus( byte[] bytes, int index )
506 {
507 if ( ( bytes == null ) || ( bytes.length == 0 ) || ( index < 0 ) || ( index >= bytes.length ) )
508 {
509 return false;
510 }
511 else
512 {
513 byte c = bytes[index];
514
515 return ( ( c | 0x7F ) == 0x7F ) && CHAR[c];
516 }
517 }
518
519
520
521
522
523
524
525
526
527
528 public static boolean isAlphaDigitMinus( char[] chars, int index )
529 {
530 if ( ( chars == null ) || ( chars.length == 0 ) || ( index < 0 ) || ( index >= chars.length ) )
531 {
532 return false;
533 }
534 else
535 {
536 char c = chars[index];
537
538 return ( c <= 127 ) && CHAR[c];
539 }
540 }
541
542
543
544
545
546
547
548
549
550
551 public static boolean isAlphaDigitMinus( String string, int index )
552 {
553 if ( string == null )
554 {
555 return false;
556 }
557
558 int length = string.length();
559
560 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
561 {
562 return false;
563 }
564 else
565 {
566 char c = string.charAt( index );
567
568 return ( c <= 127 ) && CHAR[c];
569 }
570 }
571
572
573
574
575
576
577
578
579
580 public static boolean isAlphaDigitMinus( char c )
581 {
582 return ( ( c & 0x007F ) == c ) && CHAR[c];
583 }
584
585
586
587
588
589
590
591
592
593
594
595 public static boolean isBit( String string, int index )
596 {
597 if ( string == null )
598 {
599 return false;
600 }
601
602 int length = string.length();
603
604 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
605 {
606 return false;
607 }
608 else
609 {
610 char c = string.charAt( index );
611 return ( c == '0' ) || ( c == '1' );
612 }
613 }
614
615
616
617
618
619
620
621
622
623 public static boolean isDigit( byte[] bytes )
624 {
625 if ( ( bytes == null ) || ( bytes.length == 0 ) )
626 {
627 return false;
628 }
629 else
630 {
631 return ( ( bytes[0] | 0x7F ) == 0x7F ) && DIGIT[bytes[0]];
632 }
633 }
634
635
636
637
638
639
640
641
642
643
644 public static boolean isDigit( char car )
645 {
646 return ( car >= '0' ) && ( car <= '9' );
647 }
648
649
650
651
652
653
654
655
656
657
658 public static boolean isDigit( byte car )
659 {
660 return ( car >= '0' ) && ( car <= '9' );
661 }
662
663
664
665
666
667
668
669
670
671
672 public static boolean isDigit( byte[] bytes, int index )
673 {
674 if ( ( bytes == null ) || ( bytes.length == 0 ) || ( index < 0 ) || ( index >= bytes.length ) )
675 {
676 return false;
677 }
678 else
679 {
680 return ( ( bytes[index] | 0x7F ) == 0x7F ) && DIGIT[bytes[index]];
681 }
682 }
683
684
685
686
687
688
689
690
691
692
693 public static boolean isDigit( char[] chars, int index )
694 {
695 if ( ( chars == null ) || ( chars.length == 0 ) || ( index < 0 ) || ( index >= chars.length ) )
696 {
697 return false;
698 }
699 else
700 {
701 return ( chars[index] <= 127 ) && DIGIT[chars[index]];
702 }
703 }
704
705
706
707
708
709
710
711
712
713
714 public static boolean isDigit( String string, int index )
715 {
716 if ( string == null )
717 {
718 return false;
719 }
720
721 int length = string.length();
722
723 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
724 {
725 return false;
726 }
727 else
728 {
729 char c = string.charAt( index );
730
731 return ( c <= 127 ) && DIGIT[c];
732 }
733 }
734
735
736
737
738
739
740
741
742
743 public static boolean isDigit( char[] chars )
744 {
745 if ( ( chars == null ) || ( chars.length == 0 ) )
746 {
747 return false;
748 }
749 else
750 {
751 return ( chars[0] <= 127 ) && DIGIT[chars[0]];
752 }
753 }
754
755
756
757
758
759
760
761
762
763 public static boolean isHex( char c )
764 {
765 return ( ( c | 0x007F ) == 0x007F ) && HEX[c];
766 }
767
768
769
770
771
772
773
774
775
776 public static boolean isHex( byte b )
777 {
778 return ( ( b | 0x7F ) == 0x7F ) && HEX[b];
779 }
780
781
782
783
784
785
786
787
788
789
790 public static boolean isHex( byte[] bytes, int index )
791 {
792 if ( ( bytes == null ) || ( bytes.length == 0 ) || ( index < 0 ) || ( index >= bytes.length ) )
793 {
794 return false;
795 }
796 else
797 {
798 byte c = bytes[index];
799
800 return ( ( c | 0x7F ) == 0x7F ) && HEX[c];
801 }
802 }
803
804
805
806
807
808
809
810
811
812
813 public static boolean isHex( char[] chars, int index )
814 {
815 if ( ( chars == null ) || ( chars.length == 0 ) || ( index < 0 ) || ( index >= chars.length ) )
816 {
817 return false;
818 }
819 else
820 {
821 char c = chars[index];
822
823 return ( ( c | 0x007F ) == 0x007F ) && HEX[c];
824 }
825 }
826
827
828
829
830
831
832
833
834
835
836 public static boolean isHex( String string, int index )
837 {
838 if ( string == null )
839 {
840 return false;
841 }
842
843 int length = string.length();
844
845 if ( ( length == 0 ) || ( index < 0 ) || ( index >= length ) )
846 {
847 return false;
848 }
849 else
850 {
851 char c = string.charAt( index );
852
853 return ( ( c | 0x007F ) == 0x007F ) && HEX[c];
854 }
855 }
856
857
858
859
860
861
862
863
864
865 public static boolean isUnderscore( byte[] bytes, int index )
866 {
867 if ( ( bytes == null ) || ( bytes.length == 0 ) || ( index < 0 ) || ( index >= bytes.length ) )
868 {
869 return false;
870 }
871 else
872 {
873 byte c = bytes[index];
874
875 return c == 0x5F;
876 }
877 }
878
879 }