Package squidpony
Class StringKit
java.lang.Object
squidpony.StringKit
public class StringKit extends Object
Various utility functions for dealing with Strings, CharSequences, and char[]s; this has lots of methods to convert
to and from Strings and numbers, but also has tools to wrap long CharSequences to fit in a maximum width, join arrays
of various items into long Strings, split/search/count occurrences of literal char arrays or CharSequences without
using any regex, and generally tidy up generated text. This last step includes padding left and right (including a
"strict" option that truncates Strings that are longer than the padded size), Capitalizing Each Word, Capitalizing
the first word in a sentence, replacing "a improper usage of a" with "an improved replacement using an," etc. This
also has a lot of predefined categories of chars that are considered widely enough supported in fonts, like
Created by Tommy Ettinger on 3/21/2016.
COMMON_PUNCTUATION and LATIN_LETTERS_UPPER.
Created by Tommy Ettinger on 3/21/2016.
-
Field Summary
Fields Modifier and Type Field Description static StringBOX_DRAWINGstatic StringBOX_DRAWING_DOUBLEstatic StringBOX_DRAWING_SINGLEstatic StringCOMMON_PUNCTUATIONstatic StringCURRENCYstatic StringCYRILLIC_LETTERSstatic StringCYRILLIC_LETTERS_LOWERstatic StringCYRILLIC_LETTERS_UPPERstatic StringDIGITSstatic StringENGLISH_LETTERSstatic StringENGLISH_LETTERS_LOWERstatic StringENGLISH_LETTERS_UPPERstatic StringGREEK_LETTERSstatic StringGREEK_LETTERS_LOWERIncludes both lower-case forms for Sigma, 'ς' and 'σ', but this matches the two upper-case Sigma inGREEK_LETTERS_UPPER.static StringGREEK_LETTERS_UPPERIncludes the letter Sigma, 'Σ', twice because it has two lower-case forms inGREEK_LETTERS_LOWER.static StringGROUPING_SIGNS_CLOSEAn index inGROUPING_SIGNS_OPENcan be used here to find the closing char for that opening one.static StringGROUPING_SIGNS_OPENCan be used to match an index with one inGROUPING_SIGNS_CLOSEto find the closing char (this way only).static char[]hexDigitsConstant storing the 16 hexadecimal digits, as char values, in order.static StringLATIN_EXTENDED_LETTERSstatic StringLATIN_EXTENDED_LETTERS_LOWERstatic StringLATIN_EXTENDED_LETTERS_UPPERstatic StringLATIN_LETTERSstatic StringLATIN_LETTERS_LOWERstatic StringLATIN_LETTERS_UPPERstatic StringLETTERSstatic StringLETTERS_AND_NUMBERSstatic StringLETTERS_LOWERstatic StringLETTERS_UPPERstatic StringMARKSstatic Stringmask16static Stringmask32static Stringmask64static Stringmask8static StringMODERN_PUNCTUATIONstatic regexodus.PatternnonSpacePatternstatic StringPERMISSIBLE_CHARSA constant containing only chars that are reasonably likely to be supported by broad fonts and thus display-able.static StringPUNCTUATIONstatic StringSPACINGstatic StringTECHNICAL_PUNCTUATIONstatic StringUNCOMMON_PUNCTUATIONstatic StringVISUAL_SYMBOLSstatic regexodus.PatternwhitespacePattern -
Constructor Summary
Constructors Constructor Description StringKit() -
Method Summary
Modifier and Type Method Description static StringBuilderappendHex(StringBuilder builder, byte number)static StringBuilderappendHex(StringBuilder builder, char number)static StringBuilderappendHex(StringBuilder builder, double number)static StringBuilderappendHex(StringBuilder builder, float number)static StringBuilderappendHex(StringBuilder builder, int number)static StringBuilderappendHex(StringBuilder builder, long number)static StringBuilderappendHex(StringBuilder builder, short number)static byteb64DecodeByte(char[] data, int offset)Decodes 2 characters from data starting from offset to get a byte encoded as base-64.static charb64DecodeChar(char[] data, int offset)Decodes 3 characters from data starting from offset to get a char encoded as base-64.static doubleb64DecodeDouble(char[] data, int offset)Decodes 11 characters from data starting from offset to get a double encoded as base-64.static floatb64DecodeFloat(char[] data, int offset)Decodes 6 characters from data starting from offset to get a float encoded as base-64.static intb64DecodeInt(char[] data, int offset)Decodes 6 characters from data starting from offset to get an int encoded as base-64.static longb64DecodeLong(char[] data, int offset)Decodes 11 characters from data starting from offset to get a long encoded as base-64.static shortb64DecodeShort(char[] data, int offset)Decodes 3 characters from data starting from offset to get a short encoded as base-64.static char[]b64Encode(byte number, int offset, char[] buf)Base-64 encodes number and stores that string representation in buf starting at offset; uses 2 chars.static char[]b64Encode(char glyph, int offset, char[] buf)Base-64 encodes glyph and stores that string representation in buf starting at offset; uses 3 chars.static char[]b64Encode(double number, int offset, char[] buf)Base-64 encodes number and stores that string representation in buf starting at offset; uses 11 chars.static char[]b64Encode(float number, int offset, char[] buf)Base-64 encodes number and stores that string representation in buf starting at offset; uses 6 chars.static char[]b64Encode(int number, int offset, char[] buf)Base-64 encodes number and stores that string representation in buf starting at offset; uses 6 chars.static char[]b64Encode(long number, int offset, char[] buf)Base-64 encodes number and stores that string representation in buf starting at offset; uses 11 chars.static char[]b64Encode(short number, int offset, char[] buf)Base-64 encodes number and stores that string representation in buf starting at offset; uses 3 chars.static Stringbin(byte number)static Stringbin(char number)static Stringbin(int number)static Stringbin(long number)static Stringbin(short number)static Stringcapitalize(CharSequence original)Capitalizes Each Word In The Parameteroriginal, Returning A New String.static booleancontains(CharSequence text, char[] search)Searches text for the exact contents of the char array search; returns true if text contains search.static intcontainsPart(CharSequence text, char[] search)Tries to find as much of the char arraysearchin the CharSequencetext, always starting from the beginning of search (if the beginning isn't found, then it finds nothing), and returns the length of the found part of search (0 if not found).static intcontainsPart(CharSequence text, char[] search, CharSequence prefix, CharSequence suffix)Tries to find as much of the sequenceprefix search suffixas it can in text, where prefix and suffix are CharSequences for some reason and search is a char array.static StringcorrectABeforeVowel(CharSequence text)A simple method that looks for any occurrences of the word 'a' followed by some non-zero amount of whitespace and then any vowel starting the following word (such as 'a item'), then replaces each such improper 'a' with 'an' (such as 'an item').static intcount(String source, int search)Scans repeatedly insourcefor the codepointsearch(which is usually a char literal), not scanning the same section twice, and returns the number of instances of search that were found, or 0 if source is null.static intcount(String source, int search, int startIndex, int endIndex)Scans repeatedly insource(only using the area from startIndex, inclusive, to endIndex, exclusive) for the codepointsearch(which is usually a char literal), not scanning the same section twice, and returns the number of instances of search that were found, or 0 if source is null or if the searched area is empty.static intcount(String source, String search)Scans repeatedly insourcefor the Stringsearch, not scanning the same char twice except as part of a larger String, and returns the number of instances of search that were found, or 0 if source is null or if search is null or empty.static intcount(String source, String search, int startIndex, int endIndex)Scans repeatedly insource(only using the area from startIndex, inclusive, to endIndex, exclusive) for the Stringsearch, not scanning the same char twice except as part of a larger String, and returns the number of instances of search that were found, or 0 if source or search is null or if the searched area is empty.static Stringhex(byte number)static Stringhex(byte[] numbers)static Stringhex(char number)static Stringhex(char[] numbers)static Stringhex(double number)static Stringhex(double[] numbers)static Stringhex(float number)static Stringhex(float[] numbers)static Stringhex(int number)static Stringhex(int[] numbers)static Stringhex(long number)static Stringhex(long[] numbers)static Stringhex(short number)static Stringhex(short[] numbers)static StringhexHash(boolean... array)static StringhexHash(byte... array)static StringhexHash(char... array)static StringhexHash(int... array)static StringhexHash(long... array)static StringhexHash(short... array)static intindexOf(CharSequence text, String regex)static intindexOf(CharSequence text, String regex, int beginIndex)static intindexOf(CharSequence text, regexodus.Pattern regex)static intindexOf(CharSequence text, regexodus.Pattern regex, int beginIndex)static intintFromBin(CharSequence cs)Reads in a CharSequence containing only binary digits (only 0 and 1) and returns the int they represent, reading at most 32 characters and returning the result if valid or 0 otherwise.static intintFromBin(CharSequence cs, int start, int end)Reads in a CharSequence containing only binary digits (only 0 and 1) and returns the int they represent, reading at most 32 characters and returning the result if valid or 0 otherwise.static intintFromDec(CharSequence cs)Reads in a CharSequence containing only decimal digits (0-9) with an optional sign at the start and returns the int they represent, reading at most 10 characters (11 if there is a sign) and returning the result if valid, or 0 if nothing could be read.static intintFromDec(CharSequence cs, int start, int end)Reads in a CharSequence containing only decimal digits (0-9) with an optional sign at the start and returns the int they represent, reading at most 10 characters (11 if there is a sign) and returning the result if valid, or 0 if nothing could be read.static intintFromHex(char[] cs, int start, int end)Reads in a char[] containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the int they represent, reading at most 8 characters (9 if there is a sign) and returning the result if valid, or 0 if nothing could be read.static intintFromHex(CharSequence cs)Reads in a CharSequence containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the int they represent, reading at most 8 characters (9 if there is a sign) and returning the result if valid, or 0 if nothing could be read.static intintFromHex(CharSequence cs, int start, int end)Reads in a CharSequence containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the int they represent, reading at most 8 characters (9 if there is a sign) and returning the result if valid, or 0 if nothing could be read.static Stringjoin(CharSequence delimiter, boolean... elements)static Stringjoin(CharSequence delimiter, byte... elements)static Stringjoin(CharSequence delimiter, char... elements)static Stringjoin(CharSequence delimiter, double... elements)static Stringjoin(CharSequence delimiter, float... elements)static Stringjoin(CharSequence delimiter, int... elements)static Stringjoin(CharSequence delimiter, long... elements)static Stringjoin(CharSequence delimiter, short... elements)static Stringjoin(CharSequence delimiter, CharSequence... elements)static Stringjoin(CharSequence delimiter, Iterable<?> elements)Joins the items inelementsby calling their toString method on them (or just using the String "null" for null items), and separating each item withdelimiter.static Stringjoin(CharSequence delimiter, Object[] elements)Joins the items inelementsby calling their toString method on them (or just using the String "null" for null items), and separating each item withdelimiter.static Stringjoin(CharSequence delimiter, Collection<? extends CharSequence> elements)static StringjoinAlt(boolean... elements)Joins the boolean arrayelementswithout delimiters into a String, using "1" for true and "0" for false.static StringjoinAlt(CharSequence delimiter, long... elements)Likejoin(CharSequence, long...), but this appends an 'L' to each number so they can be read in by Java.static StringjoinArrays(CharSequence delimiter, char[]... elements)static longlongFromBin(CharSequence cs)Reads in a CharSequence containing only binary digits (only 0 and 1) and returns the long they represent, reading at most 64 characters and returning the result if valid or 0 otherwise.static longlongFromBin(CharSequence cs, int start, int end)Reads in a CharSequence containing only binary digits (only 0 and 1) and returns the long they represent, reading at most 64 characters and returning the result if valid or 0 otherwise.static longlongFromDec(CharSequence cs)Reads in a CharSequence containing only decimal digits (0-9) with an optional sign at the start and returns the long they represent, reading at most 19 characters (20 if there is a sign) and returning the result if valid, or 0 if nothing could be read.static longlongFromDec(CharSequence cs, int start, int end)Reads in a CharSequence containing only decimal digits (0-9) with an optional sign at the start and returns the long they represent between the given positionsstartandend, reading at most 19 characters (20 if there is a sign) or until end is reached and returning the result if valid, or 0 if nothing could be read.static longlongFromHex(char[] cs, int start, int end)Reads in a char[] containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the long they represent, reading at most 16 characters (17 if there is a sign) and returning the result if valid, or 0 if nothing could be read.static longlongFromHex(CharSequence cs)Reads in a CharSequence containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the long they represent, reading at most 16 characters (17 if there is a sign) and returning the result if valid, or 0 if nothing could be read.static longlongFromHex(CharSequence cs, int start, int end)Reads in a CharSequence containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the long they represent, reading at most 16 characters (17 if there is a sign) and returning the result if valid, or 0 if nothing could be read.static StringpadLeft(String text, char padChar, int minimumLength)If text is shorter than the given minimumLength, returns a String with text padded on the left with padChar until it reaches that length; otherwise it simply returns text.static StringpadLeft(String text, int minimumLength)If text is shorter than the given minimumLength, returns a String with text padded on the left with spaces until it reaches that length; otherwise it simply returns text.static StringpadLeftStrict(String text, char padChar, int totalLength)Constructs a String with exactly the given totalLength by taking text (or a substring of it) and padding it on its left side with padChar until totalLength is reached.static StringpadLeftStrict(String text, int totalLength)Constructs a String with exactly the given totalLength by taking text (or a substring of it) and padding it on its left side with spaces until totalLength is reached.static StringpadRight(String text, char padChar, int minimumLength)If text is shorter than the given minimumLength, returns a String with text padded on the right with padChar until it reaches that length; otherwise it simply returns text.static StringpadRight(String text, int minimumLength)If text is shorter than the given minimumLength, returns a String with text padded on the right with spaces until it reaches that length; otherwise it simply returns text.static StringpadRightStrict(String text, char padChar, int totalLength)Constructs a String with exactly the given totalLength by taking text (or a substring of it) and padding it on its right side with padChar until totalLength is reached.static StringpadRightStrict(String text, int totalLength)Constructs a String with exactly the given totalLength by taking text (or a substring of it) and padding it on its right side with spaces until totalLength is reached.static Stringreplace(CharSequence text, String before, String after)static StringsafeSubstring(String source, int beginIndex, int endIndex)LikeString.substring(int, int)but returns "" instead of throwing any sort of Exception.static StringsentenceCase(CharSequence original)Attempts to scan for sentences inoriginal, capitalizes the first letter of each sentence, and otherwise leaves the CharSequence untouched as it returns it as a String.static String[]split(String source, String delimiter)LikeString.split(String)but doesn't use any regex for splitting (delimiter is a literal String).static List<String>wrap(CharSequence longText, int width)Word-wraps the given String (or other CharSequence, such as a StringBuilder) so it is split into zero or more Strings as lines of text, with the given width as the maximum width for a line.static List<String>wrap(List<String> receiving, CharSequence longText, int width)Word-wraps the given String (or other CharSequence, such as a StringBuilder) so it is split into zero or more Strings as lines of text, with the given width as the maximum width for a line; appends the word-wrapped lines to the given List of Strings and does not create a new List.
-
Field Details
-
mask64
- See Also:
- Constant Field Values
-
mask32
- See Also:
- Constant Field Values
-
mask16
- See Also:
- Constant Field Values
-
mask8
- See Also:
- Constant Field Values
-
whitespacePattern
-
nonSpacePattern
-
hexDigits
Constant storing the 16 hexadecimal digits, as char values, in order. -
PERMISSIBLE_CHARS
A constant containing only chars that are reasonably likely to be supported by broad fonts and thus display-able. This assumes the font supports Latin, Greek, and Cyrillic alphabets, with good support for extended Latin (at least for European languages) but not required to be complete enough to support the very large Vietnamese set of extensions to Latin, nor to support any International Phonetic Alphabet (IPA) chars. It also assumes box drawing characters are supported and a handful of common dingbats, such as male and female signs. It does not include the tab, newline, or carriage return characters, since these don't usually make sense on a grid of chars.- See Also:
- Constant Field Values
-
BOX_DRAWING_SINGLE
- See Also:
- Constant Field Values
-
BOX_DRAWING_DOUBLE
- See Also:
- Constant Field Values
-
BOX_DRAWING
- See Also:
- Constant Field Values
-
VISUAL_SYMBOLS
- See Also:
- Constant Field Values
-
DIGITS
- See Also:
- Constant Field Values
-
MARKS
- See Also:
- Constant Field Values
-
GROUPING_SIGNS_OPEN
Can be used to match an index with one inGROUPING_SIGNS_CLOSEto find the closing char (this way only).- See Also:
- Constant Field Values
-
GROUPING_SIGNS_CLOSE
An index inGROUPING_SIGNS_OPENcan be used here to find the closing char for that opening one.- See Also:
- Constant Field Values
-
COMMON_PUNCTUATION
- See Also:
- Constant Field Values
-
MODERN_PUNCTUATION
- See Also:
- Constant Field Values
-
UNCOMMON_PUNCTUATION
- See Also:
- Constant Field Values
-
TECHNICAL_PUNCTUATION
- See Also:
- Constant Field Values
-
PUNCTUATION
- See Also:
- Constant Field Values
-
CURRENCY
- See Also:
- Constant Field Values
-
SPACING
- See Also:
- Constant Field Values
-
ENGLISH_LETTERS_UPPER
- See Also:
- Constant Field Values
-
ENGLISH_LETTERS_LOWER
- See Also:
- Constant Field Values
-
ENGLISH_LETTERS
- See Also:
- Constant Field Values
-
LATIN_EXTENDED_LETTERS_UPPER
- See Also:
- Constant Field Values
-
LATIN_EXTENDED_LETTERS_LOWER
- See Also:
- Constant Field Values
-
LATIN_EXTENDED_LETTERS
- See Also:
- Constant Field Values
-
LATIN_LETTERS_UPPER
- See Also:
- Constant Field Values
-
LATIN_LETTERS_LOWER
- See Also:
- Constant Field Values
-
LATIN_LETTERS
- See Also:
- Constant Field Values
-
GREEK_LETTERS_UPPER
Includes the letter Sigma, 'Σ', twice because it has two lower-case forms inGREEK_LETTERS_LOWER. This lets you use one index for both lower and upper case, like with Latin and Cyrillic.- See Also:
- Constant Field Values
-
GREEK_LETTERS_LOWER
Includes both lower-case forms for Sigma, 'ς' and 'σ', but this matches the two upper-case Sigma inGREEK_LETTERS_UPPER. This lets you use one index for both lower and upper case, like with Latin and Cyrillic.- See Also:
- Constant Field Values
-
GREEK_LETTERS
- See Also:
- Constant Field Values
-
CYRILLIC_LETTERS_UPPER
- See Also:
- Constant Field Values
-
CYRILLIC_LETTERS_LOWER
- See Also:
- Constant Field Values
-
CYRILLIC_LETTERS
- See Also:
- Constant Field Values
-
LETTERS_UPPER
- See Also:
- Constant Field Values
-
LETTERS_LOWER
- See Also:
- Constant Field Values
-
LETTERS
- See Also:
- Constant Field Values
-
LETTERS_AND_NUMBERS
- See Also:
- Constant Field Values
-
-
Constructor Details
-
Method Details
-
contains
Searches text for the exact contents of the char array search; returns true if text contains search.- Parameters:
text- a CharSequence, such as a String or StringBuilder, that might contain searchsearch- a char array to try to find in text- Returns:
- true if search was found
-
containsPart
Tries to find as much of the char arraysearchin the CharSequencetext, always starting from the beginning of search (if the beginning isn't found, then it finds nothing), and returns the length of the found part of search (0 if not found).- Parameters:
text- a CharSequence to search insearch- a char array to look for- Returns:
- the length of the searched-for char array that was found
-
containsPart
public static int containsPart(CharSequence text, char[] search, CharSequence prefix, CharSequence suffix)Tries to find as much of the sequenceprefix search suffixas it can in text, where prefix and suffix are CharSequences for some reason and search is a char array. Returns the length of the sequence it was able to match, up toprefix.length() + search.length + suffix.length(), or 0 if no part of the looked-for sequence could be found.
This is almost certainly too specific to be useful outside of a handful of cases.- Parameters:
text- a CharSequence to search insearch- a char array to look for, surrounded by prefix and suffixprefix- a mandatory prefix before search, separated for some weird optimization reasonsuffix- a mandatory suffix after search, separated for some weird optimization reason- Returns:
- the length of the searched-for prefix+search+suffix that was found
-
join
-
join
-
joinArrays
-
join
-
join
-
join
-
join
-
join
-
join
-
join
-
join
-
join
Joins the items inelementsby calling their toString method on them (or just using the String "null" for null items), and separating each item withdelimiter. Unlike other join methods in this class, this does not take a vararg of Object items, since that would cause confusion with the overloads that take one object, such asjoin(CharSequence, Iterable); it takes a non-vararg Object array instead.- Parameters:
delimiter- the String or other CharSequence to separate items in elements withelements- the Object items to stringify and join into one String; if the array is null or empty, this returns an empty String, and if items are null, they are shown as "null"- Returns:
- the String representations of the items in elements, separated by delimiter and put in one String
-
join
Joins the items inelementsby calling their toString method on them (or just using the String "null" for null items), and separating each item withdelimiter. This can take any Iterable of any type for its elements parameter.- Parameters:
delimiter- the String or other CharSequence to separate items in elements withelements- the Object items to stringify and join into one String; if Iterable is null or empty, this returns an empty String, and if items are null, they are shown as "null"- Returns:
- the String representations of the items in elements, separated by delimiter and put in one String
-
joinAlt
Joins the boolean arrayelementswithout delimiters into a String, using "1" for true and "0" for false.- Parameters:
elements- an array or vararg of booleans- Returns:
- a String using 1 for true elements and 0 for false, or "N" if elements is null
-
joinAlt
Likejoin(CharSequence, long...), but this appends an 'L' to each number so they can be read in by Java.- Parameters:
delimiter-elements-- Returns:
-
count
Scans repeatedly insourcefor the Stringsearch, not scanning the same char twice except as part of a larger String, and returns the number of instances of search that were found, or 0 if source is null or if search is null or empty.- Parameters:
source- a String to look throughsearch- a String to look for- Returns:
- the number of times search was found in source
-
count
Scans repeatedly insourcefor the codepointsearch(which is usually a char literal), not scanning the same section twice, and returns the number of instances of search that were found, or 0 if source is null.- Parameters:
source- a String to look throughsearch- a codepoint or char to look for- Returns:
- the number of times search was found in source
-
count
Scans repeatedly insource(only using the area from startIndex, inclusive, to endIndex, exclusive) for the Stringsearch, not scanning the same char twice except as part of a larger String, and returns the number of instances of search that were found, or 0 if source or search is null or if the searched area is empty. If endIndex is negative, this will search from startIndex until the end of the source.- Parameters:
source- a String to look throughsearch- a String to look forstartIndex- the first index to search through, inclusiveendIndex- the last index to search through, exclusive; if negative this will search the rest of source- Returns:
- the number of times search was found in source
-
count
Scans repeatedly insource(only using the area from startIndex, inclusive, to endIndex, exclusive) for the codepointsearch(which is usually a char literal), not scanning the same section twice, and returns the number of instances of search that were found, or 0 if source is null or if the searched area is empty. If endIndex is negative, this will search from startIndex until the end of the source.- Parameters:
source- a String to look throughsearch- a codepoint or char to look forstartIndex- the first index to search through, inclusiveendIndex- the last index to search through, exclusive; if negative this will search the rest of source- Returns:
- the number of times search was found in source
-
safeSubstring
LikeString.substring(int, int)but returns "" instead of throwing any sort of Exception.- Parameters:
source- the String to get a substring frombeginIndex- the first index, inclusive; will be treated as 0 if negativeendIndex- the index after the last character (exclusive); if negative this will be source.length()- Returns:
- the substring of source between beginIndex and endIndex, or "" if any parameters are null/invalid
-
split
LikeString.split(String)but doesn't use any regex for splitting (delimiter is a literal String).- Parameters:
source- the String to get split-up substrings fromdelimiter- the literal String to split on (not a regex); will not be included in the returned String array- Returns:
- a String array consisting of at least one String (all of Source if nothing was split)
-
hex
-
hex
-
hex
-
hex
-
hex
-
hex
-
hex
-
appendHex
-
appendHex
-
appendHex
-
appendHex
-
appendHex
-
appendHex
-
appendHex
-
hex
-
hex
-
hex
-
hex
-
hex
-
hex
-
hex
-
bin
-
bin
-
bin
-
bin
-
bin
-
longFromHex
Reads in a CharSequence containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the long they represent, reading at most 16 characters (17 if there is a sign) and returning the result if valid, or 0 if nothing could be read. The leading sign can be '+' or '-' if present. This can also represent negative numbers as they are printed by such methods as String.format given a %x in the formatting string, or this class'hex(long)method; that is, if the first char of a 16-char (or longer) CharSequence is a hex digit 8 or higher, then the whole number represents a negative number, using two's complement and so on. This means "FFFFFFFFFFFFFFFF" would return the long -1 when passed to this, though you could also simply use "-1 ".
Should be fairly close to Java 8's Long.parseUnsignedLong method, which is an odd omission from earlier JDKs. This doesn't throw on invalid input, though, instead returning 0 if the first char is not a hex digit, or stopping the parse process early if a non-hex-digit char is read before the end of cs is reached. If the parse is stopped early, this behaves as you would expect for a number with less digits, and simply doesn't fill the larger places.- Parameters:
cs- a CharSequence, such as a String, containing only hex digits with an optional sign (no 0x at the start)- Returns:
- the long that cs represents
-
longFromHex
Reads in a CharSequence containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the long they represent, reading at most 16 characters (17 if there is a sign) and returning the result if valid, or 0 if nothing could be read. The leading sign can be '+' or '-' if present. This can also represent negative numbers as they are printed by such methods as String.format given a %x in the formatting string, or this class'hex(long)method; that is, if the first char of a 16-char (or longer) CharSequence is a hex digit 8 or higher, then the whole number represents a negative number, using two's complement and so on. This means "FFFFFFFFFFFFFFFF" would return the long -1 when passed to this, though you could also simply use "-1 ". If you use both '-' at the start and have the most significant digit as 8 or higher, such as with "-FFFFFFFFFFFFFFFF", then both indicate a negative number, but the digits will be processed first (producing -1) and then the whole thing will be multiplied by -1 to flip the sign again (returning 1).
Should be fairly close to Java 8's Long.parseUnsignedLong method, which is an odd omission from earlier JDKs. This doesn't throw on invalid input, though, instead returning 0 if the first char is not a hex digit, or stopping the parse process early if a non-hex-digit char is read before end is reached. If the parse is stopped early, this behaves as you would expect for a number with less digits, and simply doesn't fill the larger places.- Parameters:
cs- a CharSequence, such as a String, containing only hex digits with an optional sign (no 0x at the start)start- the (inclusive) first character position in cs to readend- the (exclusive) last character position in cs to read (this stops after 16 characters if end is too large)- Returns:
- the long that cs represents
-
longFromHex
Reads in a char[] containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the long they represent, reading at most 16 characters (17 if there is a sign) and returning the result if valid, or 0 if nothing could be read. The leading sign can be '+' or '-' if present. This can also represent negative numbers as they are printed by such methods as String.format given a %x in the formatting string, or this class'hex(long)method; that is, if the first digit of a 16-char (or longer) char[] is a hex digit 8 or higher, then the whole number represents a negative number, using two's complement and so on. This means "FFFFFFFFFFFFFFFF" would return the long -1L when passed to this, though you could also simply use "-1 ". If you use both '-' at the start and have the most significant digit as 8 or higher, such as with "-FFFFFFFFFFFFFFFF", then both indicate a negative number, but the digits will be processed first (producing -1) and then the whole thing will be multiplied by -1 to flip the sign again (returning 1).
Should be fairly close to Java 8's Long.parseUnsignedLong method, which is an odd omission from earlier JDKs. This doesn't throw on invalid input, though, instead returning 0 if the first char is not a hex digit, or stopping the parse process early if a non-hex-digit char is read before end is reached. If the parse is stopped early, this behaves as you would expect for a number with less digits, and simply doesn't fill the larger places.- Parameters:
cs- a char array containing only hex digits with an optional sign (no 0x at the start)start- the (inclusive) first character position in cs to readend- the (exclusive) last character position in cs to read (this stops after 8 or 9 characters if end is too large, depending on sign)- Returns:
- the long that cs represents
-
intFromHex
Reads in a CharSequence containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the int they represent, reading at most 8 characters (9 if there is a sign) and returning the result if valid, or 0 if nothing could be read. The leading sign can be '+' or '-' if present. This can also represent negative numbers as they are printed by such methods as String.format given a %x in the formatting string, or this class'hex(int)method; that is, if the first digit of an 8-char (or longer) CharSequence is a hex digit 8 or higher, then the whole number represents a negative number, using two's complement and so on. This means "FFFFFFFF" would return the int -1 when passed to this, though you could also simply use "-1 ". If you use both '-' at the start and have the most significant digit as 8 or higher, such as with "-FFFFFFFF", then both indicate a negative number, but the digits will be processed first (producing -1) and then the whole thing will be multiplied by -1 to flip the sign again (returning 1).
Should be fairly close to Java 8's Integer.parseUnsignedInt method, which is an odd omission from earlier JDKs. This doesn't throw on invalid input, though, instead returning 0 if the first char is not a hex digit, or stopping the parse process early if a non-hex-digit char is read before the end of cs is reached. If the parse is stopped early, this behaves as you would expect for a number with less digits, and simply doesn't fill the larger places.- Parameters:
cs- a CharSequence, such as a String, containing only hex digits with an optional sign (no 0x at the start)- Returns:
- the int that cs represents
-
intFromHex
Reads in a CharSequence containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the int they represent, reading at most 8 characters (9 if there is a sign) and returning the result if valid, or 0 if nothing could be read. The leading sign can be '+' or '-' if present. This can also represent negative numbers as they are printed by such methods as String.format given a %x in the formatting string, or this class'hex(int)method; that is, if the first digit of an 8-char (or longer) CharSequence is a hex digit 8 or higher, then the whole number represents a negative number, using two's complement and so on. This means "FFFFFFFF" would return the int -1 when passed to this, though you could also simply use "-1 ". If you use both '-' at the start and have the most significant digit as 8 or higher, such as with "-FFFFFFFF", then both indicate a negative number, but the digits will be processed first (producing -1) and then the whole thing will be multiplied by -1 to flip the sign again (returning 1).
Should be fairly close to Java 8's Integer.parseUnsignedInt method, which is an odd omission from earlier JDKs. This doesn't throw on invalid input, though, instead returning 0 if the first char is not a hex digit, or stopping the parse process early if a non-hex-digit char is read before end is reached. If the parse is stopped early, this behaves as you would expect for a number with less digits, and simply doesn't fill the larger places.- Parameters:
cs- a CharSequence, such as a String, containing only hex digits with an optional sign (no 0x at the start)start- the (inclusive) first character position in cs to readend- the (exclusive) last character position in cs to read (this stops after 8 or 9 characters if end is too large, depending on sign)- Returns:
- the int that cs represents
-
intFromHex
Reads in a char[] containing only hex digits (only 0-9, a-f, and A-F) with an optional sign at the start and returns the int they represent, reading at most 8 characters (9 if there is a sign) and returning the result if valid, or 0 if nothing could be read. The leading sign can be '+' or '-' if present. This can also represent negative numbers as they are printed by such methods as String.format given a %x in the formatting string, or this class'hex(int)method; that is, if the first digit of an 8-char (or longer) char[] is a hex digit 8 or higher, then the whole number represents a negative number, using two's complement and so on. This means "FFFFFFFF" would return the int -1 when passed to this, though you could also simply use "-1 ". If you use both '-' at the start and have the most significant digit as 8 or higher, such as with "-FFFFFFFF", then both indicate a negative number, but the digits will be processed first (producing -1) and then the whole thing will be multiplied by -1 to flip the sign again (returning 1).
Should be fairly close to Java 8's Integer.parseUnsignedInt method, which is an odd omission from earlier JDKs. This doesn't throw on invalid input, though, instead returning 0 if the first char is not a hex digit, or stopping the parse process early if a non-hex-digit char is read before end is reached. If the parse is stopped early, this behaves as you would expect for a number with less digits, and simply doesn't fill the larger places.- Parameters:
cs- a char array containing only hex digits with an optional sign (no 0x at the start)start- the (inclusive) first character position in cs to readend- the (exclusive) last character position in cs to read (this stops after 8 or 9 characters if end is too large, depending on sign)- Returns:
- the int that cs represents
-
longFromDec
Reads in a CharSequence containing only decimal digits (0-9) with an optional sign at the start and returns the long they represent, reading at most 19 characters (20 if there is a sign) and returning the result if valid, or 0 if nothing could be read. The leading sign can be '+' or '-' if present. UnlikeintFromDec(CharSequence), this can't effectively be used to read unsigned longs as decimal literals, since anything larger than the highest signed long would be larger than the normal limit for longs as text (it would be 20 characters without a sign, where we limit it to 19 without a sign to match normal behavior).
Should be fairly close to the JDK's Long.parseLong method, but this also supports CharSequence data instead of just String data, and ignores chars after the number. This doesn't throw on invalid input, either, instead returning 0 if the first char is not a decimal digit, or stopping the parse process early if a non-decimal-digit char is read before the end of cs is reached. If the parse is stopped early, this behaves as you would expect for a number with less digits, and simply doesn't fill the larger places.- Parameters:
cs- a CharSequence, such as a String, containing only digits 0-9 with an optional sign- Returns:
- the long that cs represents
-
longFromDec
Reads in a CharSequence containing only decimal digits (0-9) with an optional sign at the start and returns the long they represent between the given positionsstartandend, reading at most 19 characters (20 if there is a sign) or until end is reached and returning the result if valid, or 0 if nothing could be read. The leading sign can be '+' or '-' if present. UnlikeintFromDec(CharSequence, int, int), this can't effectively be used to read unsigned longs as decimal literals, since anything larger than the highest signed long would be larger than the normal limit for longs as text (it would be 20 characters without a sign, where we limit it to 19 without a sign to match normal behavior).
Should be fairly close to the JDK's Long.parseLong method, but this also supports CharSequence data instead of just String data, and allows specifying a start and end. This doesn't throw on invalid input, either, instead returning 0 if the first char is not a decimal digit, or stopping the parse process early if a non-decimal-digit char is read before end is reached. If the parse is stopped early, this behaves as you would expect for a number with less digits, and simply doesn't fill the larger places.- Parameters:
cs- a CharSequence, such as a String, containing only digits 0-9 with an optional signstart- the (inclusive) first character position in cs to readend- the (exclusive) last character position in cs to read (this stops after 19 or 20 characters if end is too large, depending on sign)- Returns:
- the long that cs represents
-
intFromDec
Reads in a CharSequence containing only decimal digits (0-9) with an optional sign at the start and returns the int they represent, reading at most 10 characters (11 if there is a sign) and returning the result if valid, or 0 if nothing could be read. The leading sign can be '+' or '-' if present. This can technically be used to handle unsigned integers in decimal format, but it isn't the intended purpose. If you do use it for handling unsigned ints, 2147483647 is normally the highest positive int and -2147483648 the lowest negative one, but if you give this a number between 2147483647 and2147483647 + 2147483648, it will interpret it as a negative number that fits in bounds using the normal rules for converting between signed and unsigned numbers.
Should be fairly close to the JDK's Integer.parseInt method, but this also supports CharSequence data instead of just String data, and ignores chars after the number. This doesn't throw on invalid input, either, instead returning 0 if the first char is not a decimal digit, or stopping the parse process early if a non-decimal-digit char is read before the end of cs is reached. If the parse is stopped early, this behaves as you would expect for a number with less digits, and simply doesn't fill the larger places.- Parameters:
cs- a CharSequence, such as a String, containing only digits 0-9 with an optional sign- Returns:
- the int that cs represents
-
intFromDec
Reads in a CharSequence containing only decimal digits (0-9) with an optional sign at the start and returns the int they represent, reading at most 10 characters (11 if there is a sign) and returning the result if valid, or 0 if nothing could be read. The leading sign can be '+' or '-' if present. This can technically be used to handle unsigned integers in decimal format, but it isn't the intended purpose. If you do use it for handling unsigned ints, 2147483647 is normally the highest positive int and -2147483648 the lowest negative one, but if you give this a number between 2147483647 and2147483647 + 2147483648, it will interpret it as a negative number that fits in bounds using the normal rules for converting between signed and unsigned numbers.
Should be fairly close to the JDK's Integer.parseInt method, but this also supports CharSequence data instead of just String data, and allows specifying a start and end. This doesn't throw on invalid input, either, instead returning 0 if the first char is not a decimal digit, or stopping the parse process early if a non-decimal-digit char is read before end is reached. If the parse is stopped early, this behaves as you would expect for a number with less digits, and simply doesn't fill the larger places.- Parameters:
cs- a CharSequence, such as a String, containing only digits 0-9 with an optional signstart- the (inclusive) first character position in cs to readend- the (exclusive) last character position in cs to read (this stops after 10 or 11 characters if end is too large, depending on sign)- Returns:
- the int that cs represents
-
longFromBin
Reads in a CharSequence containing only binary digits (only 0 and 1) and returns the long they represent, reading at most 64 characters and returning the result if valid or 0 otherwise. The first digit is considered the sign bit iff cs is 64 chars long.
Should be fairly close to Java 8's Long.parseUnsignedLong method, which is a bizarre omission from earlier JDKs. This doesn't throw on invalid input, though, instead returning 0.- Parameters:
cs- a CharSequence, such as a String, containing only binary digits (nothing at the start)- Returns:
- the long that cs represents
-
longFromBin
Reads in a CharSequence containing only binary digits (only 0 and 1) and returns the long they represent, reading at most 64 characters and returning the result if valid or 0 otherwise. The first digit is considered the sign bit iff cs is 64 chars long.
Should be fairly close to Java 8's Long.parseUnsignedLong method, which is a bizarre omission from earlier JDKs. This doesn't throw on invalid input, though, instead returning 0.- Parameters:
cs- a CharSequence, such as a String, containing only binary digits (nothing at the start)start- the first character position in cs to read fromend- the last character position in cs to read from (this stops after 64 characters if end is too large)- Returns:
- the long that cs represents
-
intFromBin
Reads in a CharSequence containing only binary digits (only 0 and 1) and returns the int they represent, reading at most 32 characters and returning the result if valid or 0 otherwise. The first digit is considered the sign bit iff cs is 32 chars long.
Should be fairly close to Java 8's Integer.parseUnsignedInt method, which is a bizarre omission from earlier JDKs. This doesn't throw on invalid input, though, instead returning 0.- Parameters:
cs- a CharSequence, such as a String, containing only binary digits (nothing at the start)- Returns:
- the int that cs represents
-
intFromBin
Reads in a CharSequence containing only binary digits (only 0 and 1) and returns the int they represent, reading at most 32 characters and returning the result if valid or 0 otherwise. The first digit is considered the sign bit iff cs is 32 chars long.
Should be fairly close to Java 8's Integer.parseUnsignedInt method, which is a bizarre omission from earlier JDKs. This doesn't throw on invalid input, though, instead returning 0.- Parameters:
cs- a CharSequence, such as a String, containing only binary digits (nothing at the start)start- the first character position in cs to read fromend- the last character position in cs to read from (this stops after 32 characters if end is too large)- Returns:
- the int that cs represents
-
b64Encode
Base-64 encodes number and stores that string representation in buf starting at offset; uses 11 chars.- Parameters:
number- the long to encodeoffset- the first position to set in bufbuf- a char array that should be non-null and have length of at least offset + 11- Returns:
- buf, after modifying it in-place
-
b64Encode
Base-64 encodes number and stores that string representation in buf starting at offset; uses 11 chars.- Parameters:
number- the double to encodeoffset- the first position to set in bufbuf- a char array that should be non-null and have length of at least offset + 11- Returns:
- buf, after modifying it in-place
-
b64Encode
Base-64 encodes number and stores that string representation in buf starting at offset; uses 6 chars.- Parameters:
number- the int to encodeoffset- the first position to set in bufbuf- a char array that should be non-null and have length of at least offset + 6- Returns:
- buf, after modifying it in-place
-
b64Encode
Base-64 encodes number and stores that string representation in buf starting at offset; uses 6 chars.- Parameters:
number- the float to encodeoffset- the first position to set in bufbuf- a char array that should be non-null and have length of at least offset + 6- Returns:
- buf, after modifying it in-place
-
b64Encode
Base-64 encodes number and stores that string representation in buf starting at offset; uses 3 chars.- Parameters:
number- the int to encodeoffset- the first position to set in bufbuf- a char array that should be non-null and have length of at least offset + 3- Returns:
- buf, after modifying it in-place
-
b64Encode
Base-64 encodes glyph and stores that string representation in buf starting at offset; uses 3 chars.- Parameters:
glyph- the char to encodeoffset- the first position to set in bufbuf- a char array that should be non-null and have length of at least offset + 3- Returns:
- buf, after modifying it in-place
-
b64Encode
Base-64 encodes number and stores that string representation in buf starting at offset; uses 2 chars.- Parameters:
number- the byte to encodeoffset- the first position to set in bufbuf- a char array that should be non-null and have length of at least offset + 2- Returns:
- buf, after modifying it in-place
-
b64DecodeLong
Decodes 11 characters from data starting from offset to get a long encoded as base-64.- Parameters:
data- a char array that should be have length of at least offset + 11offset- where in data to start reading from- Returns:
- the decoded long
-
b64DecodeDouble
Decodes 11 characters from data starting from offset to get a double encoded as base-64.- Parameters:
data- a char array that should be have length of at least offset + 11offset- where in data to start reading from- Returns:
- the decoded double
-
b64DecodeInt
Decodes 6 characters from data starting from offset to get an int encoded as base-64.- Parameters:
data- a char array that should be have length of at least offset + 6offset- where in data to start reading from- Returns:
- the decoded int
-
b64DecodeFloat
Decodes 6 characters from data starting from offset to get a float encoded as base-64.- Parameters:
data- a char array that should be have length of at least offset + 6offset- where in data to start reading from- Returns:
- the decoded float
-
b64DecodeShort
Decodes 3 characters from data starting from offset to get a short encoded as base-64.- Parameters:
data- a char array that should be have length of at least offset + 3offset- where in data to start reading from- Returns:
- the decoded short
-
b64DecodeChar
Decodes 3 characters from data starting from offset to get a char encoded as base-64.- Parameters:
data- a char array that should be have length of at least offset + 3offset- where in data to start reading from- Returns:
- the decoded char
-
b64DecodeByte
Decodes 2 characters from data starting from offset to get a byte encoded as base-64.- Parameters:
data- a char array that should be have length of at least offset + 2offset- where in data to start reading from- Returns:
- the decoded byte
-
hexHash
-
hexHash
-
hexHash
-
hexHash
-
hexHash
-
hexHash
-
padRight
If text is shorter than the given minimumLength, returns a String with text padded on the right with spaces until it reaches that length; otherwise it simply returns text.- Parameters:
text- the text to pad if necessaryminimumLength- the minimum length of String to return- Returns:
- text, potentially padded with spaces to reach the given minimum length
-
padRight
If text is shorter than the given minimumLength, returns a String with text padded on the right with padChar until it reaches that length; otherwise it simply returns text.- Parameters:
text- the text to pad if necessarypadChar- the char to use to pad text, if necessaryminimumLength- the minimum length of String to return- Returns:
- text, potentially padded with padChar to reach the given minimum length
-
padRightStrict
Constructs a String with exactly the given totalLength by taking text (or a substring of it) and padding it on its right side with spaces until totalLength is reached. If text is longer than totalLength, this only uses the portion of text needed to fill totalLength, and no more.- Parameters:
text- the String to pad if necessary, or truncate if too longtotalLength- the exact length of String to return- Returns:
- a String with exactly totalLength for its length, made from text and possibly extra spaces
-
padRightStrict
Constructs a String with exactly the given totalLength by taking text (or a substring of it) and padding it on its right side with padChar until totalLength is reached. If text is longer than totalLength, this only uses the portion of text needed to fill totalLength, and no more.- Parameters:
text- the String to pad if necessary, or truncate if too longpadChar- the char to use to fill any remaining lengthtotalLength- the exact length of String to return- Returns:
- a String with exactly totalLength for its length, made from text and possibly padChar
-
padLeft
If text is shorter than the given minimumLength, returns a String with text padded on the left with spaces until it reaches that length; otherwise it simply returns text.- Parameters:
text- the text to pad if necessaryminimumLength- the minimum length of String to return- Returns:
- text, potentially padded with spaces to reach the given minimum length
-
padLeft
If text is shorter than the given minimumLength, returns a String with text padded on the left with padChar until it reaches that length; otherwise it simply returns text.- Parameters:
text- the text to pad if necessarypadChar- the char to use to pad text, if necessaryminimumLength- the minimum length of String to return- Returns:
- text, potentially padded with padChar to reach the given minimum length
-
padLeftStrict
Constructs a String with exactly the given totalLength by taking text (or a substring of it) and padding it on its left side with spaces until totalLength is reached. If text is longer than totalLength, this only uses the portion of text needed to fill totalLength, and no more.- Parameters:
text- the String to pad if necessary, or truncate if too longtotalLength- the exact length of String to return- Returns:
- a String with exactly totalLength for its length, made from text and possibly extra spaces
-
padLeftStrict
Constructs a String with exactly the given totalLength by taking text (or a substring of it) and padding it on its left side with padChar until totalLength is reached. If text is longer than totalLength, this only uses the portion of text needed to fill totalLength, and no more.- Parameters:
text- the String to pad if necessary, or truncate if too longpadChar- the char to use to fill any remaining lengthtotalLength- the exact length of String to return- Returns:
- a String with exactly totalLength for its length, made from text and possibly padChar
-
wrap
Word-wraps the given String (or other CharSequence, such as a StringBuilder) so it is split into zero or more Strings as lines of text, with the given width as the maximum width for a line. This correctly splits most (all?) text in European languages on spaces (treating all whitespace characters matched by the regex '\\s' as breaking), and also uses the English-language rule (probably used in other languages as well) of splitting on hyphens and other dash characters (Unicode category Pd) in the middle of a word. This means for a phrase like "UN Secretary General Ban-Ki Moon", if the width was 12, then the Strings in the List returned would be
"UN Secretary" "General Ban-" "Ki Moon"
Spaces are not preserved if they were used to split something into two lines, but dashes are.- Parameters:
longText- a probably-large piece of text that needs to be split into multiple lines with a max widthwidth- the max width to use for any line, removing trailing whitespace at the end of a line- Returns:
- a List of Strings for the lines after word-wrapping
-
wrap
Word-wraps the given String (or other CharSequence, such as a StringBuilder) so it is split into zero or more Strings as lines of text, with the given width as the maximum width for a line; appends the word-wrapped lines to the given List of Strings and does not create a new List. This correctly splits most (all?) text in European languages on spaces (treating all whitespace characters matched by the regex '\\s' as breaking), and also uses the English-language rule (probably used in other languages as well) of splitting on hyphens and other dash characters (Unicode category Pd) in the middle of a word. This means for a phrase like "UN Secretary General Ban-Ki Moon", if the width was 12, then the Strings in the List returned would be
"UN Secretary" "General Ban-" "Ki Moon"
Spaces are not preserved if they were used to split something into two lines, but dashes are.- Parameters:
receiving- the List of String to append the word-wrapped lines tolongText- a probably-large piece of text that needs to be split into multiple lines with a max widthwidth- the max width to use for any line, removing trailing whitespace at the end of a line- Returns:
- the given
receivingparameter, after appending the lines from word-wrapping
-
replace
-
indexOf
-
indexOf
-
indexOf
-
indexOf
-
capitalize
Capitalizes Each Word In The Parameteroriginal, Returning A New String.- Parameters:
original- a CharSequence, such as a StringBuilder or String, which could have CrAzY capitalization- Returns:
- A String With Each Word Capitalized At The Start And The Rest In Lower Case
-
sentenceCase
Attempts to scan for sentences inoriginal, capitalizes the first letter of each sentence, and otherwise leaves the CharSequence untouched as it returns it as a String. Sentences are detected with a crude heuristic of "does it have periods, exclamation marks, or question marks at the end, or does it reach the end of input? If yes, it's a sentence."- Parameters:
original- a CharSequence that is expected to contain sentence-like data that needs capitalization; existing upper-case letters will stay upper-case.- Returns:
- a String where the first letter of each sentence (detected as best this can) is capitalized.
-
correctABeforeVowel
A simple method that looks for any occurrences of the word 'a' followed by some non-zero amount of whitespace and then any vowel starting the following word (such as 'a item'), then replaces each such improper 'a' with 'an' (such as 'an item'). The regex used here isn't bulletproof, but it should be fairly robust, handling when you have multiple whitespace chars, different whitespace chars (like carriage return and newline), accented vowels in the following word (but not in the initial 'a', which is expected to use English spelling rules), and the case of the initial 'a' or 'A'.
Gotta love Regexodus; this is a two-liner that uses features specific to that regular expression library.- Parameters:
text- the (probably generated English) multi-word text to search for 'a' in and possibly replace with 'an'- Returns:
- a new String with every improper 'a' replaced
-