Return a negative integer, zero, or a positive integer if this object is less than, equal to, or greater than the specified object:
this < that => <0
this == that => 0
this > that => >0
This method may also be accessed via the <
<=
<=>
>=
and >
shortcut operators. If not overridden the default
implementation compares the toStr
representations. Also see docLang.
Examples:
3.compare(8) => -1
8.compare(3) => 1
8.compare(8) => 0
3 <=> 8 => -1 // shortcut for 3.compare(8)
Compare this object to the specified for equality. This
method may be accessed via the == and != shortcut operators.
If not overridden the default implementation compares for
reference equality using the === operator. If this method
is overridden, then hash() must also be overridden such that
any two objects which return true for equals() must return
the same value for hash(). This method must accept null
and
return false.
Return a unique hashcode for this object. If a class overrides hash() then it must ensure if equals() returns true for any two objects then they have same hash code.
Get an immutable representation of this instance or throw NotImmutableErr if this object cannot be represented as an immutable:
Return a string representation of this object.
Trap a dynamic call for handling. Dynamic calls are invoked with the -> shortcut operator:
a->x a.trap("x", null)
a->x() a.trap("x", null)
a->x = b a.trap("x", [b])
a->x(b) a.trap("x", [b])
a->x(b, c) a.trap("x", [b, c])
The default implementation provided by Obj attempts to use reflection. If name maps to a method, it is invoked with the specified arguments. If name maps to a field and args.size is zero, get the field. If name maps to a field and args.size is one, set the field and return args[0]. Otherwise throw UnknownSlotErr.
This method called whenever an it-block is applied to an
object. The default implementation calls the function with this
,
and then returns this
.
Static
allReturn true if c returns true for all of the characters in this string. If this string is empty, return true.
Example:
"Bar".all |c| { c.isUpper } => false
"BAR".all |c| { c.isUpper } => true
Static
anyReturn true if c returns true for any of the characters in this string. If this string is empty, return false.
Example:
"Foo".any |c| { c.isUpper } => true
"foo".any |c| { c.isUpper } => false
Static
capitalizeReturn this string with the first character converted uppercase. The case conversion is for ASCII only. Also see decapitalize and localeCapitalize.
Example:
"foo".capitalize => "Foo"
Static
charsStatic
compareCompare based on Unicode character values. Case is not taken into account - also see compareIgnoreCase and localeCompare.
Examples:
"a".compare("b") => -1
"hi".compare("hi") => 0
"hi".compare("HI") => 1
"b".compare("a") => 1
Static
compareCompare two strings without regard to case and return -1, 0, or 1 if this string is less than, equal to, or greater than the specified string. Only ASCII character case is taken into account. See localeCompare for localized case insensitive comparisions.
Examples:
"a".compareIgnoreCase("b") => -1
"hi".compareIgnoreCase("HI") => 0
"b".compareIgnoreCase("a") => 1
Static
containsReturn if this string contains the specified string. Convenience for index(s) != null
Static
containsReturn if this string contains the specified character.
Static
decapitalizeReturn this string with the first character converted lowercase. The case conversion is for ASCII only. Also see capitalize and localeDecapitalize.
Example:
"Foo".decapitalize => "foo"
Static
defDefault value is "".
Static
eachCall the specified function for every char in the string with index 0 and incrementing up to size-1.
Example:
"abc".each |Int c| { echo(c.toChar) }
Static
eachrReverse each - call the specified function for every char in the string starting with index size-1 and decrementing down to 0.
Example:
"abc".eachr |Int c| { echo(c.toChar) }
Static
eachStatic
echoWrite x.toStr
to standard output followed by newline. If x
is null then print "null". If no argument is provided then
print an empty line.
Optional
x: JsObjStatic
endsReturn if this Str ends with the specified Str.
Static
equalsStatic
equalsConvenience for compareIgnoreCase(s) == 0
. Only ASCII
character case is taken into account. See localeCompare
for localized case insensitive comparisions.
Static
fromStatic
fromTranslate a display name like "Foo Bar" to a programmatic name "fooBar". This method decapitalizes the first letter, then walks the string removing spaces. Also see toDisplayName.
Examples:
"Foo".fromDisplayName -> "foo"
"Foo Bar".fromDisplayName -> "fooBar"
"Foo Bar Baz".fromDisplayName -> "fooBarBaz"
"Foo 33 Bar".fromDisplayName -> "foo33Bar"
"Foo XML".fromDisplayName -> "fooXML"
"foo bar".fromDisplayName -> "fooBar"
Static
getGet the character at the zero based index as a Unicode code point. Negative indexes may be used to access from the end of the string. This method is accessed via the [] operator. Throw IndexErr if the index is out of range.
Static
getReturn a substring based on the specified range. Negative indexes may be used to access from the end of the string. This method is accessed via the [] operator. Throw IndexErr if range illegal.
Examples:
"abcd"[0..2] => "abc"
"abcd"[3..3] => "d"
"abcd"[-2..-1] => "cd"
"abcd"[0..<2] => "ab"
"abcd"[1..-2] => "bc"
"abcd"[4..-1] => ""
Static
getGet the character at the zero based index as a Unicode code
point. Negative indexes may be used to access from the end
of the string. Unlike get, this method does not
throw IndexErr when the index is out or range, instead it
returns def
.
Optional
def: numberStatic
hashThe hash for a Str is platform dependent.
Static
inCreate an input stream to read characters from this string. The input stream is designed only to read character data. Attempts to perform binary reads will throw UnsupportedErr.
Static
indexReturn the first occurrence of the specified substring searching forward, starting at the specified offset index. A negative offset may be used to access from the end of string. Return null if no occurrences are found.
Examples:
"abcabc".index("b") => 1
"abcabc".index("b", 1) => 1
"abcabc".index("b", 3) => 4
"abcabc".index("b", -3) => 4
"abcabc".index("x") => null
Optional
offset: numberStatic
indexFind the index just like index, but ignoring case for ASCII chars only.
Optional
offset: numberStatic
indexrReverse index - return the first occurrence of the specified substring searching backward, starting at the specified offset index. A negative offset may be used to access from the end of string. Return null if no occurrences are found.
Examples:
"abcabc".indexr("b") => 4
"abcabc".indexr("b", -3) => 1
"abcabc".indexr("b", 0) => null
Optional
offset: numberStatic
indexrFind the index just like indexr, but ignoring case for ASCII chars only.
Optional
offset: numberStatic
internInternalize this Str such that two strings which are equal
via the ==
operator will have the same reference such that ===
will be true.
Static
isStatic
isStatic
isReturn if every character in this Str is a US-ASCII character less than 128.
Static
isReturn if size() == 0
.
Static
isReturn if every character in this Str is ASCII lowercase: a
-'z'.
Static
isReturn if every character in this Str is whitespace: space \t \n \r \f
Static
isReturn if every character in this Str is ASCII uppercase: A
-'Z'.
Static
justlIf size is less than width, then add spaces to the right to create a left justified string. Also see padr.
Examples:
"xyz".justl(2) => "xyz"
"xyz".justl(4) => "xyz "
Static
justrIf size is less than width, then add spaces to the left to create a right justified string. Also see padl.
Examples:
"xyz".justr(2) => "xyz"
"xyz".justr(4) => " xyz"
Static
localeReturn this string with the first character converted to uppercase using the current locale. Also see localeDecapitalize and capitalize.
Static
localeCompare two strings without regard to case according to the current locale. Return -1, 0, or 1 if this string is less than, equal to, or greater than the specified string.
Examples (assuming English locale):
"a".localeCompare("b") => -1
"hi".localeCompare("HI") => 0
"b".localeCompare("A") => 1
Static
localeReturn this string with the first character converted to lowercase using the current locale. Also see localeCapitalize and decapitalize.
Static
localeReturn this string with all uppercase characters replaced to lowercase using the current locale. Also see localeUpper, lower, and Int.localeLower.
Static
localeReturn this string with all lowercase characters replaced to uppercase using the current locale. Also see localeLower, upper, and Int.localeUpper.
Static
lowerReturn this string with all uppercase characters replaced to lowercase. The case conversion is for ASCII only. Also see upper, localeLower, Int.lower, Int.localeLower.
Example:
"Apple".lower => "apple"
Static
multDuplicate this string the given number of times. Any integer less than or equal to zero returns an empty string.
Examples:
"x" * 4 => "xxxx"
Static
numCount the number of newline combinations: "\n", "\r", or "\r\n".
Static
padlIf size is less than width, then add the given char to the left to achieve the specified width. Also see justr.
Examples:
"3".padl(3, '0') => "003"
"123".padl(2, '0') => "123"
Optional
char: numberStatic
padrIf size is less than width, then add the given char to the left to achieve the specified width. Also see justl.
Examples:
"xyz".padr(2, '.') => "xyz"
"xyz".padr(5, '-') => "xyz--"
Optional
char: numberStatic
plusStatic
replaceReplace all occurrences of from
with to
.
Examples:
"hello".replace("hell", "t") => "to"
"aababa".replace("ab", "-") => "a--a"
Static
reverseReverse the contents of this string.
Example:
"stressed".reverse => "desserts"
Static
sizeReturn number of characters in this string.
Static
spacesStatic
splitSplit a string into a list of substrings using the given separator character. If there are contiguous separators, then they are split into empty strings. If trim is true, then whitespace is trimmed from the beginning and end of the results.
If separator is null, then the string is split according to
any sequence of whitespace characters (any character equal
to or less than the 0x20 space character including
, \r
, \n
,
and \t
).
If this is the empty string or there are no splits return a list of one item.
Examples:
// split on whitespace
"".split => [""]
"x".split => ["x"]
"x y".split => ["x", "y"]
" x y ".split => ["x", "y"]
" x \n y \n z ".split => ["x", "y", "z"]
// split on sep with trim
"".split('|') => [""]
"22".split(';') => ["22"]
"22;33".split(';') => ["22","33"]
"22, 33".split(',') => ["22","33"]
" 22 ; 33 ".split(';') => ["22","33"]
// split on sep with no trim
"22#33".split('#', false) => ["22","33"]
" x ; y".split(';', false) => [" x "," y"]
Optional
separator: numberOptional
trim: booleanStatic
splitSplit this string into individual lines where lines are terminated by \n, \r\n, or \r. The returned strings do not contain the newline character.
Examples:
"x\ny".splitLines => ["x", "y"]
"".splitLines => [""]
"x".splitLines => ["x"]
"\r\n".splitLines => ["", ""]
"x\n".splitLines => ["x", ""]
Static
startsReturn if this Str starts with the specified Str.
Static
toConvenience for Bool.fromStr using this string.
Optional
checked: booleanStatic
toStatic
toReturn this string as its Fantom source code and
serialization representation surrounded by the specified
quote character (which defaults to "
). If quote is null
then the return is unquoted. This method will backslash
escape the following characters: \n \r \f \t \\ $
. If the
quote character is the double quote, single quote, or
backtick then it is escaped too. Control chars less than
0x20 are escaped as \uXXXX
. If escapeUnicode
is true then
any char over 0x7F is escaped as \uXXXX
.
Optional
quote: numberOptional
escapeUnicode: booleanStatic
toConvenience for Decimal.fromStr using this string.
Optional
checked: booleanStatic
toTranslate a programmer name like "fooBar" to "Foo Bar". This method capitalizes the first letter, then walks the string looking for ASCII capital letters and inserting a space. Any underbars are replaced with a space. Also see fromDisplayName.
Examples:
"foo".toDisplayName -> "Foo
"fooBar".toDisplayName -> "Foo Bar"
"fooBarBaz".toDisplayName -> "Foo Bar Baz"
"foo33".toDisplayName -> "Foo 33"
"fooXML".toDisplayName -> "Foo XML"
"Foo".toDisplayName -> "Foo"
"foo_bar".toDisplayName -> "Foo Bar"
Static
toConvenience for Float.fromStr using this string.
Optional
checked: booleanStatic
toConvenience for Int.fromStr using this string.
Optional
radix: numberOptional
checked: booleanStatic
toReturn this. This method is used to enable toLocale
to be
used with duck typing across most built-in types.
Static
toStatic
toReturn this.
Static
toStatic
toReturn this string as valid XML text. The special control
characters amp, lt, apos and quot are always escaped. The
gt char is escaped only if it is the first char or if
preceded by the ]
char. Also see OutStream.writeXml
which is more efficient if streaming.
Static
trimTrim whitespace from the beginning and end of the string.
For the purposes of this method, whitespace is defined as
any character equal to or less than the 0x20 space character
(including
, \r
, \n
, and \t
).
Examples:
"foo".trim => "foo"
" foo".trim => "foo"
" foo ".trim => "foo"
" foo\n".trim => "foo"
" ".trim => ""
Static
trimTrim whitespace only from the end of the string. See trim for definition of whitespace.
Examples:
"foo".trim => "foo"
" foo ".trim => " foo"
Static
trimTrim whitespace only from the beginning of the string. See trim for definition of whitespace.
Examples:
"foo".trim => "foo"
" foo ".trim => "foo "
Static
trimTrim whitespace from the beginning and end of the string.
Should the resultant string be empty, null
is returned.
For the purposes of this method, whitespace is defined as
any character equal to or less than the 0x20 space character
(including
, \r
, \n
, and \t
).
Examples:
"foo".trimToNull => "foo"
" foo ".trimToNull => "foo"
"".trimToNull => null
" ".trimToNull => null
Static
upperReturn this string with all lowercase characters replaced to uppercase. The case conversion is for ASCII only. Also see lower, localeUpper, Int.upper, Int.localeUpper.
Example:
"Foo Bar".upper => "FOO BAR"
Str represents a sequence of Unicode characters.