11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/* 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright (C) 2010 The Guava Authors 31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License"); 51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * you may not use this file except in compliance with the License. 61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * You may obtain a copy of the License at 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * http://www.apache.org/licenses/LICENSE-2.0 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Unless required by applicable law or agreed to in writing, software 111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS, 121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * See the License for the specific language governing permissions and 141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * limitations under the License. 151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpackage com.google.common.base; 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.Beta; 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertimport com.google.common.annotations.GwtCompatible; 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/** 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Static methods pertaining to ASCII characters (those in the range of values 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * {@code 0x00} through {@code 0x7F}), and to strings containing such 251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * characters. 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <p>ASCII utilities also exist in other classes of this package: 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <ul> 291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <!-- TODO(kevinb): how can we make this not produce a warning when building gwt javadoc? --> 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link Charsets#US_ASCII} specifies the {@code Charset} of ASCII characters. 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <li>{@link CharMatcher#ASCII} matches ASCII characters and provides text processing methods 321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * which operate only on the ASCII characters of a string. 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * </ul> 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Craig Berry 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @author Gregory Kick 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 7.0 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@GwtCompatible 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic final class Ascii { 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert private Ascii() {} 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /* The ASCII control characters, per RFC 20. */ 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Null ('\0'): The all-zeros character which may serve to accomplish 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * time fill and media fill. Normally used as a C string terminator. 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * <p>Although RFC 20 names this as "Null", note that it is distinct 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * from the C/C++ "NULL" pointer. 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte NUL = 0; 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Start of Heading: A communication control character used at 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * the beginning of a sequence of characters which constitute a 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * machine-sensible address or routing information. Such a sequence is 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * referred to as the "heading." An STX character has the effect of 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * terminating a heading. 611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte SOH = 1; 651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Start of Text: A communication control character which 681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * precedes a sequence of characters that is to be treated as an entity 691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * and entirely transmitted through to the ultimate destination. Such a 701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * sequence is referred to as "text." STX may be used to terminate a 711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * sequence of characters started by SOH. 721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte STX = 2; 761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * End of Text: A communication control character used to 791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * terminate a sequence of characters started with STX and transmitted 801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * as an entity. 811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte ETX = 3; 851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * End of Transmission: A communication control character used 881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * to indicate the conclusion of a transmission, which may have 891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * contained one or more texts and any associated headings. 901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte EOT = 4; 941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Enquiry: A communication control character used in data 971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * communication systems as a request for a response from a remote 981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * station. It may be used as a "Who Are You" (WRU) to obtain 991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * identification, or may be used to obtain station status, or both. 1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte ENQ = 5; 1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Acknowledge: A communication control character transmitted 1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * by a receiver as an affirmative response to a sender. 1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte ACK = 6; 1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Bell ('\a'): A character for use when there is a need to call for 1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * human attention. It may control alarm or attention devices. 1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte BEL = 7; 1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Backspace ('\b'): A format effector which controls the movement of 1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * the printing position one printing space backward on the same 1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * printing line. (Applicable also to display devices.) 1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte BS = 8; 1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Horizontal Tabulation ('\t'): A format effector which controls the 1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * movement of the printing position to the next in a series of 1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * predetermined positions along the printing line. (Applicable also to 1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * display devices and the skip function on punched cards.) 1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte HT = 9; 1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Line Feed ('\n'): A format effector which controls the movement of 1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * the printing position to the next printing line. (Applicable also to 1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * display devices.) Where appropriate, this character may have the 1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * meaning "New Line" (NL), a format effector which controls the 1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * movement of the printing point to the first printing position on the 1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * next printing line. Use of this convention requires agreement 1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * between sender and recipient of data. 1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte LF = 10; 1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Alternate name for {@link #LF}. ({@code LF} is preferred.) 1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte NL = 10; 1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Vertical Tabulation ('\v'): A format effector which controls the 1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * movement of the printing position to the next in a series of 1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * predetermined printing lines. (Applicable also to display devices.) 1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte VT = 11; 1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Form Feed ('\f'): A format effector which controls the movement of 1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * the printing position to the first pre-determined printing line on 1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * the next form or page. (Applicable also to display devices.) 1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte FF = 12; 1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Carriage Return ('\r'): A format effector which controls the 1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * movement of the printing position to the first printing position on 1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * the same printing line. (Applicable also to display devices.) 1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte CR = 13; 1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Shift Out: A control character indicating that the code 1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * combinations which follow shall be interpreted as outside of the 1901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * character set of the standard code table until a Shift In character 1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * is reached. 1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte SO = 14; 1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Shift In: A control character indicating that the code 1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * combinations which follow shall be interpreted according to the 2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * standard code table. 2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte SI = 15; 2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Data Link Escape: A communication control character which 2081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * will change the meaning of a limited number of contiguously following 2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * characters. It is used exclusively to provide supplementary controls 2101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * in data communication networks. 2111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte DLE = 16; 2151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Device Controls: Characters for the control 2181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * of ancillary devices associated with data processing or 2191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * telecommunication systems, more especially switching devices "on" or 2201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * "off." (If a single "stop" control is required to interrupt or turn 2211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * off ancillary devices, DC4 is the preferred assignment.) 2221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte DC1 = 17; // aka XON 2261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Transmission on/off: Although originally defined as DC1, this ASCII 2291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * control character is now better known as the XON code used for software 2301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * flow control in serial communications. The main use is restarting 2311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * the transmission after the communication has been stopped by the XOFF 2321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * control code. 2331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte XON = 17; // aka DC1 2371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @see #DC1 2401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte DC2 = 18; 2441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @see #DC1 2471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte DC3 = 19; // aka XOFF 2511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Transmission off. @see #XON 2541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte XOFF = 19; // aka DC3 2581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @see #DC1 2611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte DC4 = 20; 2651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Negative Acknowledge: A communication control character 2681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * transmitted by a receiver as a negative response to the sender. 2691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte NAK = 21; 2731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Synchronous Idle: A communication control character used by 2761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * a synchronous transmission system in the absence of any other 2771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * character to provide a signal from which synchronism may be achieved 2781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * or retained. 2791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte SYN = 22; 2831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * End of Transmission Block: A communication control character 2861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * used to indicate the end of a block of data for communication 2871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * purposes. ETB is used for blocking data where the block structure is 2881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * not necessarily related to the processing format. 2891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte ETB = 23; 2931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Cancel: A control character used to indicate that the data 2961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * with which it is sent is in error or is to be disregarded. 2971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 2981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 2991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte CAN = 24; 3011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * End of Medium: A control character associated with the sent 3041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * data which may be used to identify the physical end of the medium, or 3051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * the end of the used, or wanted, portion of information recorded on a 3061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * medium. (The position of this character does not necessarily 3071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * correspond to the physical end of the medium.) 3081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 3101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte EM = 25; 3121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Substitute: A character that may be substituted for a 3151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * character which is determined to be invalid or in error. 3161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 3181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte SUB = 26; 3201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Escape: A control character intended to provide code 3231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * extension (supplementary characters) in general information 3241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * interchange. The Escape character itself is a prefix affecting the 3251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * interpretation of a limited number of contiguously following 3261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * characters. 3271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 3291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte ESC = 27; 3311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * File/Group/Record/Unit Separator: These information separators may be 3341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * used within data in optional fashion, except that their hierarchical 3351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * relationship shall be: FS is the most inclusive, then GS, then RS, 3361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * and US is least inclusive. (The content and length of a File, Group, 3371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Record, or Unit are not specified.) 3381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 3401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte FS = 28; 3421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @see #FS 3451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 3471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte GS = 29; 3491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @see #FS 3521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 3541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte RS = 30; 3561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @see #FS 3591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 3611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte US = 31; 3631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Space: A normally non-printing graphic character used to 3661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * separate words. It is also a format effector which controls the 3671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * movement of the printing position, one printing position forward. 3681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * (Applicable also to display devices.) 3691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 3711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte SP = 32; 3731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Alternate name for {@link #SP}. 3761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 3781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte SPACE = 32; 3801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Delete: This character is used primarily to "erase" or 3831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * "obliterate" erroneous or unwanted characters in perforated tape. 3841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 8.0 3861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final byte DEL = 127; 3881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * The minimum value of an ASCII character. 3911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 3921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 9.0 3931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 3941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Beta 3951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final int MIN = 0; 3961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 3971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 3981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * The maximum value of an ASCII character. 3991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 4001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * @since 9.0 4011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 4021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @Beta 4031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static final int MAX = 127; 4041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 4061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Returns a copy of the input string in which all {@linkplain #isUpperCase(char) uppercase ASCII 4071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * characters} have been converted to lowercase. All other characters are copied without 4081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * modification. 4091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 4101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static String toLowerCase(String string) { 4111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int length = string.length(); 4121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert StringBuilder builder = new StringBuilder(length); 4131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (int i = 0; i < length; i++) { 4141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder.append(toLowerCase(string.charAt(i))); 4151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return builder.toString(); 4171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 4201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * If the argument is an {@linkplain #isUpperCase(char) uppercase ASCII character} returns the 4211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * lowercase equivalent. Otherwise returns the argument. 4221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 4231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static char toLowerCase(char c) { 4241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return isUpperCase(c) ? (char) (c ^ 0x20) : c; 4251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 4281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Returns a copy of the input string in which all {@linkplain #isLowerCase(char) lowercase ASCII 4291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * characters} have been converted to uppercase. All other characters are copied without 4301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * modification. 4311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 4321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static String toUpperCase(String string) { 4331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int length = string.length(); 4341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert StringBuilder builder = new StringBuilder(length); 4351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert for (int i = 0; i < length; i++) { 4361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert builder.append(toUpperCase(string.charAt(i))); 4371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return builder.toString(); 4391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 4421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * If the argument is a {@linkplain #isLowerCase(char) lowercase ASCII character} returns the 4431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * uppercase equivalent. Otherwise returns the argument. 4441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 4451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static char toUpperCase(char c) { 4461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return isLowerCase(c) ? (char) (c & 0x5f) : c; 4471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 4501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Indicates whether {@code c} is one of the twenty-six lowercase ASCII alphabetic characters 4511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * between {@code 'a'} and {@code 'z'} inclusive. All others (including non-ASCII characters) 4521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * return {@code false}. 4531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 4541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static boolean isLowerCase(char c) { 4551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return (c >= 'a') && (c <= 'z'); 4561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 4581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 4591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Indicates whether {@code c} is one of the twenty-six uppercase ASCII alphabetic characters 4601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * between {@code 'A'} and {@code 'Z'} inclusive. All others (including non-ASCII characters) 4611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * return {@code false}. 4621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 4631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert public static boolean isUpperCase(char c) { 4641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return (c >= 'A') && (c <= 'Z'); 4651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 4661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 467