|
Groovy JDK |
Method Summary | |
---|---|
Object
|
asType(Class c)
Provides a method to perform custom 'dynamic' type conversion to the given class using the as operator.
|
Pattern
|
bitwiseNegate()
Turns a String into a regular expression Pattern |
String
|
capitalize()
Convenience method to capitalize the first letter of a string (typically the first letter of a word). |
String
|
center(Number numberOfChars)
Pad a String to a minimum length specified by numberOfChars by adding the space character around it as many times as needed so that it remains centered. |
String
|
center(Number numberOfChars, String padding)
Pad a String to a minimum length specified by numberOfChars, appending the supplied padding String around the original as many times as needed keeping it centered. |
String
|
collectReplacements(Closure transform)
Iterate through this String a character at a time collecting either the original character or a transformed replacement String. |
boolean
|
contains(String text)
Provide an implementation of contains() like Collection#contains to make Strings more polymorphic. |
int
|
count(String text)
Count the number of occurrences of a substring. |
byte[]
|
decodeBase64()
Decode the String from Base64 into a byte array. |
byte[]
|
decodeHex()
Decodes a hex string to a byte array. |
String
|
denormalize()
Return a String with lines (separated by LF, CR/LF, or CR) terminated by the platform specific line separator. |
Object
|
eachLine(Closure closure)
Iterates through this String line by line. |
Object
|
eachLine(int firstLine, Closure closure)
Iterates through this String line by line. |
String
|
eachMatch(Pattern pattern, Closure closure)
Process each regex group matched substring of the given pattern. |
String
|
eachMatch(String regex, Closure closure)
Process each regex group matched substring of the given string. |
Process
|
execute()
Executes the command specified by self as a command-line process.
|
Process
|
execute(String[] envp, File dir)
Executes the command specified by self with environment defined by envp
and under the working directory dir .
|
Process
|
execute(List envp, File dir)
Executes the command specified by self with environment defined
by envp and under the working directory dir .
|
String
|
expand()
Expands all tabs into spaces with tabStops of size 8. |
String
|
expand(int tabStop)
Expands all tabs into spaces. |
String
|
expandLine(int tabStop)
Expands all tabs into spaces. |
String
|
find(Pattern pattern)
Finds the first occurrence of a compiled regular expression Pattern within a String. |
String
|
find(Pattern pattern, Closure closure)
Returns the result of calling a closure with the first occurrence of a compiled regular expression found within a String. |
String
|
find(String regex)
Finds the first occurrence of a regular expression String within a String. |
String
|
find(String regex, Closure closure)
Returns the result of calling a closure with the first occurrence of a regular expression found within a String. |
List
|
findAll(Pattern pattern)
Returns a (possibly empty) list of all occurrences of a regular expression (in Pattern format) found within a String. |
List
|
findAll(Pattern pattern, Closure closure)
Finds all occurrences of a compiled regular expression Pattern within a String. |
List
|
findAll(String regex)
Returns a (possibly empty) list of all occurrences of a regular expression (in String format) found within a String. |
List
|
findAll(String regex, Closure closure)
Finds all occurrences of a regular expression string within a String. |
String
|
getAt(Collection indices)
Select a List of characters from a String using a Collection to identify the indices to be selected. |
String
|
getAt(EmptyRange range)
Support the range subscript operator for String with EmptyRange |
String
|
getAt(int index)
Support the subscript operator for String. |
String
|
getAt(IntRange range)
Support the range subscript operator for String with IntRange |
String
|
getAt(Range range)
Support the range subscript operator for String |
char[]
|
getChars()
Converts the given String into an array of characters. |
boolean
|
isAllWhitespace()
True if a String only contains whitespace characters. |
boolean
|
isBigDecimal()
Determine if a String can be parsed into a BigDecimal. |
boolean
|
isBigInteger()
Determine if a String can be parsed into a BigInteger. |
boolean
|
isCase(Object switchValue)
'Case' implementation for a String, which uses String#equals(Object) in order to allow Strings to be used in switch statements. |
boolean
|
isDouble()
Determine if a String can be parsed into a Double. |
boolean
|
isFloat()
Determine if a String can be parsed into a Float. |
boolean
|
isInteger()
Determine if a String can be parsed into an Integer. |
boolean
|
isLong()
Determine if a String can be parsed into a Long. |
boolean
|
isNumber()
Determine if a String can be parsed into a Number. |
StringBuffer
|
leftShift(Object value)
Overloads the left shift operator to provide an easy way to append multiple objects as string representations to a String. |
boolean
|
matches(Pattern pattern)
Tells whether or not self matches the given compiled regular expression Pattern. |
String
|
minus(Object target)
Remove a part of a String. |
String
|
multiply(Number factor)
Repeat a String a certain number of times. |
String
|
next()
This method is called by the ++ operator for the class String. |
String
|
normalize()
Return a String with linefeeds and carriage returns normalized to linefeeds. |
String
|
padLeft(Number numberOfChars)
Pad a String to a minimum length specified by numberOfChars by adding the space character to the left as many times as needed. |
String
|
padLeft(Number numberOfChars, String padding)
Pad a String to a minimum length specified by numberOfChars, adding the supplied padding String as many times as needed to the left. |
String
|
padRight(Number numberOfChars)
Pad a String to a minimum length specified by numberOfChars by adding the space character to the right as many times as needed. |
String
|
padRight(Number numberOfChars, String padding)
Pad a String to a minimum length specified by numberOfChars, adding the supplied padding String as many times as needed to the right. |
String
|
plus(Object value)
Appends the String representation of the given operand to this string. |
String
|
previous()
This method is called by the -- operator for the class String. |
List
|
readLines()
Return the lines of a String as a List of Strings. |
String
|
replaceAll(Pattern pattern, Closure closure)
Replaces all occurrences of a captured group by the result of a closure call on that text. |
String
|
replaceAll(Pattern pattern, String replacement)
Replaces all substrings of a String that match the given compiled regular expression with the given replacement. |
String
|
replaceAll(String regex, Closure closure)
Replaces all occurrences of a captured group by the result of a closure on that text. |
String
|
replaceFirst(Pattern pattern, Closure closure)
Replaces the first occurrence of a captured group by the result of a closure call on that text. |
String
|
replaceFirst(Pattern pattern, String replacement)
Replaces the first substring of a String that matches the given compiled regular expression with the given replacement. |
String
|
replaceFirst(String regex, Closure closure)
Replaces the first occurrence of a captured group by the result of a closure call on that text. |
String
|
reverse()
Creates a new string which is the reverse (backwards) of this string |
int
|
size()
Provide the standard Groovy size() method for String .
|
String[]
|
split()
Convenience method to split a string (with whitespace as delimiter) Like tokenize, but returns an Array of Strings instead of a List |
Object
|
splitEachLine(Pattern pattern, Closure closure)
Iterates through the given String line by line, splitting each line using the given separator Pattern. |
Object
|
splitEachLine(String regex, Closure closure)
Iterates through the given String line by line, splitting each line using the given separator. |
String
|
stripIndent()
Strip leading spaces from every line in a String. |
String
|
stripIndent(int numChars)
Strip numChar leading characters from every line in a String. |
String
|
stripMargin()
Strip leading whitespace/control characters followed by '|' from every line in a String. |
String
|
stripMargin(char marginChar)
Strip leading whitespace/control characters followed by marginChar from every line in a String. |
String
|
stripMargin(String marginChar)
Strip leading whitespace/control characters followed by marginChar from every line in a String. |
BigDecimal
|
toBigDecimal()
Parse a String into a BigDecimal |
BigInteger
|
toBigInteger()
Parse a String into a BigInteger |
Boolean
|
toBoolean()
Converts the given string into a Boolean object. |
Character
|
toCharacter()
Converts the given string into a Character object using the first character in the string. |
Double
|
toDouble()
Parse a String into a Double |
Float
|
toFloat()
Parse a String into a Float |
Integer
|
toInteger()
Parse a String into an Integer |
List
|
toList()
Converts the given String into a List of strings of one character. |
Long
|
toLong()
Parse a String into a Long |
Set
|
toSet()
Converts the given String into a Set of unique strings of one character. |
Short
|
toShort()
Parse a String into a Short |
URI
|
toURI()
Transforms a String representing a URI into a URI object. |
URL
|
toURL()
Transforms a String representing a URL into a URL object. |
List
|
tokenize()
Tokenize a String (with a whitespace as the delimiter). |
List
|
tokenize(Character token)
Tokenize a String based on the given character delimiter. |
List
|
tokenize(String token)
Tokenize a String based on the given string delimiter. |
String
|
tr(String sourceSet, String replacementSet)
Translates a string by replacing characters from the sourceSet with characters from replacementSet. |
String
|
unexpand()
Replaces sequences of whitespaces with tabs using tabStops of size 8. |
String
|
unexpand(int tabStop)
Replaces sequences of whitespaces with tabs. |
String
|
unexpandLine(int tabStop)
Replaces sequences of whitespaces with tabs within a line. |
Method Detail |
---|
public Object asType(Class c)
as
operator.
Example: '123' as Double
By default, the following types are supported:
c
- the desired class.public Pattern bitwiseNegate()
public String capitalize()
assert 'h'.capitalize() == 'H' assert 'hello'.capitalize() == 'Hello' assert 'hello world'.capitalize() == 'Hello world' assert 'Hello World' == 'hello world'.split(' ').collect{ it.capitalize() }.join(' ')
public String center(Number numberOfChars)
['A', 'BB', 'CCC', 'DDDD'].each{ println '|' + it.center(6) + '|' }will produce output like:
| A | | BB | | CCC | | DDDD |
numberOfChars
- the total minimum number of characters of the resulting string.public String center(Number numberOfChars, String padding)
['A', 'BB', 'CCC', 'DDDD'].each{ println '|' + it.center(6, '+') + '|' }will produce output like:
|++A+++| |++BB++| |+CCC++| |+DDDD+|
numberOfChars
- the total minimum number of characters of the resulting string.padding
- the characters used for padding.public String collectReplacements(Closure transform)
assert "Groovy".collectReplacements{ it == 'o' ? '_O_' : null } == 'Gr_O__O_vy' assert "B&W".collectReplacements{ it == '&' ? '&' : null } == 'B&W'
public boolean contains(String text)
text
- a String to look for.public int count(String text)
text
- a substring.public byte[] decodeBase64()
public byte[] decodeHex()
public String denormalize()
public Object eachLine(Closure closure)
closure
- a closure.public Object eachLine(int firstLine, Closure closure)
firstLine
- the line number value used for the first line (default is 1, set to 0 to start counting from 0).closure
- a closure (arg 1 is line, optional arg 2 is line number).public String eachMatch(Pattern pattern, Closure closure)
pattern
- a regex Pattern.closure
- a closure with one parameter or as much parameters as groups.public String eachMatch(String regex, Closure closure)
regex
- a Regex string.closure
- a closure with one parameter or as much parameters as groups.public Process execute()
self
as a command-line process.
For more control over Process construction you can use
java.lang.ProcessBuilder
(JDK 1.5+).
public Process execute(String[] envp, File dir)
self
with environment defined by envp
and under the working directory dir
.
For more control over Process construction you can use
java.lang.ProcessBuilder
(JDK 1.5+).
envp
- an array of Strings, each element of which
has environment variable settings in the format
name=value, or
null if the subprocess should inherit
the environment of the current process..dir
- the working directory of the subprocess, or
null if the subprocess should inherit
the working directory of the current process..public Process execute(List envp, File dir)
self
with environment defined
by envp
and under the working directory dir
.
For more control over Process construction you can use
java.lang.ProcessBuilder
(JDK 1.5+).
envp
- a List of Objects (converted to Strings using toString), each member of which
has environment variable settings in the format
name=value, or
null if the subprocess should inherit
the environment of the current process..dir
- the working directory of the subprocess, or
null if the subprocess should inherit
the working directory of the current process..public String expand()
public String expand(int tabStop)
tabStop
- The number of spaces a tab represents.public String expandLine(int tabStop)
tabStop
- The number of spaces a tab represents.public String find(Pattern pattern)
For example, if the pattern doesn't match the result is null:
assert null == "New York, NY".find(~/\d{5}/)If it does match, we get the matching string back:
assert "10292" == "New York, NY 10292-0098".find(~/\d{5}/)If we have capture groups in our expression, the groups are ignored and we get back the full match:
assert "10292-0098" == "New York, NY 10292-0098".find(~/(\d{5})-?(\d{4})/)If you need to work with capture groups, then use the closure version of this method or use Groovy's matcher operators or use eachMatch.
pattern
- the compiled regex Pattern.public String find(Pattern pattern, Closure closure)
For example, if the pattern doesn't match, the result is null:
assert null == "New York, NY".find(~/\d{5}/) { match -> return "-$match-"}If it does match and we don't have any capture groups in our regex, there is a single parameter on the closure that the match gets passed to:
assert "-10292-" == "New York, NY 10292-0098".find(~/\d{5}/) { match -> return "-$match-"}If we have capture groups in our expression, our closure has one parameter for the match, followed by one for each of the capture groups:
assert "10292" == "New York, NY 10292-0098".find(~/(\d{5})-?(\d{4})/) { match, zip, plusFour -> assert match == "10292-0098" assert zip == "10292" assert plusFour == "0098" return zip }If we have capture groups in our expression, and our closure has one parameter, the closure will be passed an array with the first element corresponding to the whole match, followed by an element for each of the capture groups:
assert "10292" == "New York, NY 10292-0098".find(~/(\d{5})-?(\d{4})/) { match, zip, plusFour -> assert array[0] == "10292-0098" assert array[1] == "10292" assert array[2] == "0098" return array[1] }If a capture group is optional, and doesn't match, then the corresponding value for that capture group passed to the closure will be null as illustrated here:
assert "2339999" == "adsf 233-9999 adsf".find(~/(\d{3})?-?(\d{3})-(\d{4})/) { match, areaCode, exchange, stationNumber -> assert "233-9999" == match assert null == areaCode assert "233" == exchange assert "9999" == stationNumber return "$exchange$stationNumber" }
pattern
- the compiled regex Pattern.closure
- the closure that will be passed the full match, plus each of the capturing groups.public String find(String regex)
For example, if the regex doesn't match the result is null:
assert null == "New York, NY".find(/\d{5}/)If it does match, we get the matching string back:
assert "10292" == "New York, NY 10292-0098".find(/\d{5}/)If we have capture groups in our expression, we still get back the full match
assert "10292-0098" == "New York, NY 10292-0098".find(/(\d{5})-?(\d{4})/)
regex
- the capturing regex.public String find(String regex, Closure closure)
For example, if the regex doesn't match, the result is null:
assert null == "New York, NY".find(~/\d{5}/) { match -> return "-$match-"}If it does match and we don't have any capture groups in our regex, there is a single parameter on the closure that the match gets passed to:
assert "-10292-" == "New York, NY 10292-0098".find(~/\d{5}/) { match -> return "-$match-"}If we have capture groups in our expression, our closure has one parameter for the match, followed by one for each of the capture groups:
assert "10292" == "New York, NY 10292-0098".find(~/(\d{5})-?(\d{4})/) { match, zip, plusFour -> assert match == "10292-0098" assert zip == "10292" assert plusFour == "0098" return zip }If we have capture groups in our expression, and our closure has one parameter, the closure will be passed an array with the first element corresponding to the whole match, followed by an element for each of the capture groups:
assert "10292" == "New York, NY 10292-0098".find(~/(\d{5})-?(\d{4})/) { match, zip, plusFour -> assert array[0] == "10292-0098" assert array[1] == "10292" assert array[2] == "0098" return array[1] }If a capture group is optional, and doesn't match, then the corresponding value for that capture group passed to the closure will be null as illustrated here:
assert "2339999" == "adsf 233-9999 adsf".find(~/(\d{3})?-?(\d{3})-(\d{4})/) { match, areaCode, exchange, stationNumber -> assert "233-9999" == match assert null == areaCode assert "233" == exchange assert "9999" == stationNumber return "$exchange$stationNumber" }
regex
- the capturing regex string.closure
- the closure that will be passed the full match, plus each of the capturing groups.public List findAll(Pattern pattern)
For example, if the pattern doesn't match, it returns an empty list:
assert [] == "foo".findAll(~/(\w*) Fish/)Any regular expression matches are returned in a list, and all regex capture groupings are ignored, only the full match is returned:
def expected = ["One Fish", "Two Fish", "Red Fish", "Blue Fish"] assert expected == "One Fish, Two Fish, Red Fish, Blue Fish".findAll(~/(\w*) Fish/)
pattern
- the compiled regex Pattern.public List findAll(Pattern pattern, Closure closure)
If there are no matches, the closure will not be called, and an empty List will be returned.
For example, if the pattern doesn't match, it returns an empty list:
assert [] == "foo".findAll(~/(\w*) Fish/) { match, firstWord -> return firstWord }Any regular expression matches are passed to the closure, if there are no capture groups, there will be one parameter for the match:
assert ["couldn't", "wouldn't"] == "I could not, would not, with a fox.".findAll(~/.ould/) { match -> "${match}n't"}If there are capture groups, the first parameter will be the match followed by one parameter for each capture group:
def orig = "There's a Wocket in my Pocket" assert ["W > Wocket", "P > Pocket"] == orig.findAll(~/(.)ocket/) { match, firstLetter -> "$firstLetter > $match" }
pattern
- the compiled regex Pattern.closure
- will be passed the full match plus each of the capturing groups.public List findAll(String regex)
For example, if the regex doesn't match, it returns an empty list:
assert [] == "foo".findAll(/(\w*) Fish/)Any regular expression matches are returned in a list, and all regex capture groupings are ignored, only the full match is returned:
def expected = ["One Fish", "Two Fish", "Red Fish", "Blue Fish"] assert expected == "One Fish, Two Fish, Red Fish, Blue Fish".findAll(/(\w*) Fish/)If you need to work with capture groups, then use the closure version of this method or use Groovy's matcher operators or use eachMatch.
regex
- the capturing regex String.public List findAll(String regex, Closure closure)
If there are no matches, the closure will not be called, and an empty List will be returned.
For example, if the regex doesn't match, it returns an empty list:
assert [] == "foo".findAll(/(\w*) Fish/) { match, firstWord -> return firstWord }Any regular expression matches are passed to the closure, if there are no capture groups, there will be one parameter for the match:
assert ["couldn't", "wouldn't"] == "I could not, would not, with a fox.".findAll(/.ould/) { match -> "${match}n't"}If there are capture groups, the first parameter will be the match followed by one parameter for each capture group:
def orig = "There's a Wocket in my Pocket" assert ["W > Wocket", "P > Pocket"] == orig.findAll(/(.)ocket/) { match, firstLetter -> "$firstLetter > $match" }
regex
- the capturing regex String.closure
- will be passed the full match plus each of the capturing groups.public String getAt(Collection indices)
indices
- a Collection of indices.public String getAt(EmptyRange range)
range
- an EmptyRange.public String getAt(int index)
index
- the index of the Character to get.public String getAt(IntRange range)
range
- an IntRange.public String getAt(Range range)
range
- a Range.public char[] getChars()
public boolean isAllWhitespace()
public boolean isBigDecimal()
public boolean isBigInteger()
public boolean isCase(Object switchValue)
switch( str ) { case 'one' : // etc... }Note that this returns
true
for the case where both the
'switch' and 'case' operand is null
.switchValue
- the switch value.public boolean isDouble()
public boolean isFloat()
public boolean isInteger()
public boolean isLong()
public boolean isNumber()
public StringBuffer leftShift(Object value)
value
- an Object.public boolean matches(Pattern pattern)
pattern
- the regex Pattern to which the string of interest is to be matched.public String minus(Object target)
target
- an object representing the part to remove.public String multiply(Number factor)
factor
- the number of times the String should be repeated.public String next()
public String normalize()
public String padLeft(Number numberOfChars)
println 'Numbers:' [1, 10, 100, 1000].each{ println it.toString().padLeft(5) }will produce output like:
Numbers: 1 10 100 1000
numberOfChars
- the total minimum number of characters of the resulting string.public String padLeft(Number numberOfChars, String padding)
println 'Numbers:' [1, 10, 100, 1000].each{ println it.toString().padLeft(5, '*') } [2, 20, 200, 2000].each{ println it.toString().padLeft(5, '*_') }will produce output like:
Numbers: ****1 ***10 **100 *1000 *_*_2 *_*20 *_200 *2000
numberOfChars
- the total minimum number of characters of the resulting string.padding
- the characters used for padding.public String padRight(Number numberOfChars)
['A', 'BB', 'CCC', 'DDDD'].each{ println it.padRight(5) + it.size() }will produce output like:
A 1 BB 2 CCC 3 DDDD 4
numberOfChars
- the total minimum number of characters of the resulting string.public String padRight(Number numberOfChars, String padding)
['A', 'BB', 'CCC', 'DDDD'].each{ println it.padRight(5, '#') + it.size() }will produce output like:
A####1 BB###2 CCC##3 DDDD#4
numberOfChars
- the total minimum number of characters of the resulting string.padding
- the characters used for padding.public String plus(Object value)
value
- any Object.public String previous()
public List readLines()
public String replaceAll(Pattern pattern, Closure closure)
For examples,
assert "hellO wOrld" == "hello world".replaceAll(~"(o)") { it[0].toUpperCase() } assert "FOOBAR-FOOBAR-" == "foobar-FooBar-".replaceAll(~"(([fF][oO]{2})[bB]ar)", { it[0].toUpperCase() }) Here, it[0] is the global string of the matched group it[1] is the first string in the matched group it[2] is the second string in the matched group assert "FOOBAR-FOOBAR-" == "foobar-FooBar-".replaceAll(~"(([fF][oO]{2})[bB]ar)", { Object[] it -> it[0].toUpperCase() }) Here, it[0] is the global string of the matched group it[1] is the first string in the matched group it[2] is the second string in the matched group assert "FOO-FOO-" == "foobar-FooBar-".replaceAll("(([fF][oO]{2})[bB]ar)", { x, y, z -> z.toUpperCase() }) Here, x is the global string of the matched group y is the first string in the matched group z is the second string in the matched groupNote that unlike String.replaceAll(String regex, String replacement), where the replacement string treats '$' and '\' specially (for group substitution), the result of the closure is converted to a string and that value is used literally for the replacement.
pattern
- the capturing regex Pattern.closure
- the closure to apply on each captured group.public String replaceAll(Pattern pattern, String replacement)
Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string; see Matcher#replaceAll. Use Matcher#quoteReplacement to suppress the special meaning of these characters, if desired.
assert "foo".replaceAll('o', 'X') == 'fXX'
pattern
- the regex Pattern to which the string of interest is to be matched.replacement
- the string to be substituted for the first match.public String replaceAll(String regex, Closure closure)
For examples,
assert "hellO wOrld" == "hello world".replaceAll("(o)") { it[0].toUpperCase() } assert "FOOBAR-FOOBAR-" == "foobar-FooBar-".replaceAll("(([fF][oO]{2})[bB]ar)", { Object[] it -> it[0].toUpperCase() }) Here, it[0] is the global string of the matched group it[1] is the first string in the matched group it[2] is the second string in the matched group assert "FOO-FOO-" == "foobar-FooBar-".replaceAll("(([fF][oO]{2})[bB]ar)", { x, y, z -> z.toUpperCase() }) Here, x is the global string of the matched group y is the first string in the matched group z is the second string in the matched groupNote that unlike String.replaceAll(String regex, String replacement), where the replacement string treats '$' and '\' specially (for group substitution), the result of the closure is converted to a string and that value is used literally for the replacement.
regex
- the capturing regex.closure
- the closure to apply on each captured group.public String replaceFirst(Pattern pattern, Closure closure)
For example (with some replaceAll variants thrown in for comparison purposes),
assert "hellO world" == "hello world".replaceFirst(~"(o)") { it[0].toUpperCase() } // first match assert "hellO wOrld" == "hello world".replaceAll(~"(o)") { it[0].toUpperCase() } // all matches assert '1-FISH, two fish' == "one fish, two fish".replaceFirst(~/([a-z]{3})\s([a-z]{4})/) { [one:1, two:2][it[1]] + '-' + it[2].toUpperCase() } assert '1-FISH, 2-FISH' == "one fish, two fish".replaceAll(~/([a-z]{3})\s([a-z]{4})/) { [one:1, two:2][it[1]] + '-' + it[2].toUpperCase() }
pattern
- the capturing regex Pattern.closure
- the closure to apply on the first captured group.public String replaceFirst(Pattern pattern, String replacement)
Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string; see Matcher#replaceFirst. Use Matcher#quoteReplacement to suppress the special meaning of these characters, if desired.
assert "foo".replaceFirst('o', 'X') == 'fXo'
pattern
- the regex Pattern to which the string of interest is to be matched.replacement
- the string to be substituted for the first match.public String replaceFirst(String regex, Closure closure)
For example (with some replaceAll variants thrown in for comparison purposes),
assert "hellO world" == "hello world".replaceFirst("(o)") { it[0].toUpperCase() } // first match assert "hellO wOrld" == "hello world".replaceAll("(o)") { it[0].toUpperCase() } // all matches assert '1-FISH, two fish' == "one fish, two fish".replaceFirst(/([a-z]{3})\s([a-z]{4})/) { [one:1, two:2][it[1]] + '-' + it[2].toUpperCase() } assert '1-FISH, 2-FISH' == "one fish, two fish".replaceAll(/([a-z]{3})\s([a-z]{4})/) { [one:1, two:2][it[1]] + '-' + it[2].toUpperCase() }
regex
- the capturing regex.closure
- the closure to apply on the first captured group.public String reverse()
public int size()
size()
method for String
.public String[] split()
public Object splitEachLine(Pattern pattern, Closure closure)
pattern
- the regular expression Pattern for the delimiter.closure
- a closure.public Object splitEachLine(String regex, Closure closure)
regex
- the delimiting regular expression.closure
- a closure.public String stripIndent()
assert ' A\n B\nC' == ' A\n B\n C'.stripIndent()
public String stripIndent(int numChars)
assert 'DEF\n456' == '''ABCDEF\n123456'''.stripIndent(3)
numChars
- The number of characters to strip.public String stripMargin()
assert 'ABC\n123\n456' == '''ABC |123 |456'''.stripMargin()
public String stripMargin(char marginChar)
assert 'ABC\n123\n456' == '''ABC *123 *456'''.stripMargin('*')
marginChar
- Any character that serves as margin delimiter.public String stripMargin(String marginChar)
marginChar
- Any character that serves as margin delimiter.public BigDecimal toBigDecimal()
public BigInteger toBigInteger()
public Boolean toBoolean()
public Character toCharacter()
public Double toDouble()
public Float toFloat()
public Integer toInteger()
public List toList()
public Long toLong()
public Set toSet()
Example usage:
assert 'groovy'.toSet() == ['v', 'g', 'r', 'o', 'y'] as Set assert "abc".toSet().iterator()[0] instanceof String
public Short toShort()
public URI toURI()
public URL toURL()
public List tokenize()
public List tokenize(Character token)
char pathSep = ':' assert "/tmp:/usr".tokenize(pathSep) == ["/tmp", "/usr"]
token
- the delimiter.public List tokenize(String token)
token
- the delimiter.public String tr(String sourceSet, String replacementSet)
Here is an example which converts the vowels in a word from lower to uppercase:
assert 'hello'.tr('aeiou', 'AEIOU') == 'hEllO'A character range using regex-style syntax can also be used, e.g. here is an example which converts a word from lower to uppercase:
assert 'hello'.tr('a-z', 'A-Z') == 'HELLO'Hyphens at the start or end of sourceSet or replacementSet are treated as normal hyphens and are not considered to be part of a range specification. Similarly, a hyphen immediately after an earlier range is treated as a normal hyphen. So, '-x', 'x-' have no ranges while 'a-c-e' has the range 'a-c' plus the '-' character plus the 'e' character.
Unlike the unix tr command, Groovy's tr command supports reverse ranges, e.g.:
assert 'hello'.tr('z-a', 'Z-A') == 'HELLO'If replacementSet is smaller than sourceSet, then the last character from replacementSet is used as the replacement for all remaining source characters as shown here:
assert 'Hello World!'.tr('a-z', 'A') == 'HAAAA WAAAA!'If sourceSet contains repeated characters, the last specified replacement is used as shown here:
assert 'Hello World!'.tr('lloo', '1234') == 'He224 W4r2d!'The functionality provided by tr can be achieved using regular expressions but tr provides a much more compact notation and efficient implementation for certain scenarios.
sourceSet
- the set of characters to translate from.replacementSet
- the set of replacement characters.public String unexpand()
public String unexpand(int tabStop)
tabStop
- The number of spaces a tab represents.public String unexpandLine(int tabStop)
tabStop
- The number of spaces a tab represents.
|
Groovy JDK |