On 14.10.2018 11:04, Jochen Theodorou wrote:
On 12.10.2018 21:22, adithyank wrote:
As suggested by Jochen Theodorou in this
link
<http://groovy.329449.n5.nabble.com/New-DSLs-in-the-groovy-platform-itself-for-more-script-like-use-cases-td5750522.html>
post, I have created this topic for `More Default String Methods`
I would like to work in these if the community accepts this proposal
//Method to return left n characters
*1. static String left(String self, int chars)*
self[0..chars]?
Having a method here might be useful, but I would call it "fromLeft .
"left" methd to me would be "all the chars left of the given char
position", which would also be good to have, imho.
//Method to return right n characters
*2. static String right(String self, int chars)*
self[-chars..-1]?
Same as "left" above (with the addition that "-chars-1" is easier to get
wrong ;-) ).
//Method to return the String that is after the first occurrence of the
given searchString
*3. static String after(String self, String searchString)*
//Method to return the String that is before the first occurrence of the
given searchString
*4. static String before(String self, String searchString)*
these sound more interesting... empty String if the search string is
not in self?
Asking mysself, how often does anyone need that, and if one does need
it, would he rememeber/find it with that name ?
Along the same line: Use a regex for special cases like that ?
//Method to return the String that is before the first '=' character
*5. static String getBeforeEq(String self)*
which is foo.before("=") if number 4 is taken... This method looks to
me a bit overspecialized
I think it is overspecialized in any case. Better to use a class that
parses e.g. an properties file for you, or go for a full blown parser here.
/**
Splits the given String with the given separator String and returns the
value at the given column Index. By
default, successive occurrence of the separator String is taken are
one unit
and the split is performed
*/
*6. static String column(String self, String separator, int colIndex)*
/**
Splits the given String with Space characters and returns the value
at the
given column Index.
*/
*7. static String column(String self, int colIndex)*
self.split(speparator)[colIndex]?
Also quite a special method, but depending on implementation,
performance of "column" method woud be much better.
//Method to return the String that is between the pair of double quotes
*8. static String bwDoubleQuotes(String line)*
//Method to return the String that is between the pair of single quotes
*9. static String bwSingleQuotes(String line)*
again these look a bit overspecialized to me
unquote(String s, String quoteString = '"') ?
//Method to return the String that is between the pair of given
enclosure
String
*10. static String bw(String line, String enclosure)*
//Method to return the String that is between the 2 given strings
*11. static String bw(String line, String from, String to)*
Is this for parsing, or is it more:
strip(String s, String bracketString) ?
trim(String s, String trimChars) ?
"bw" is way too short / non-obvious a method name in my book.
//Method to return the String that is between the nth pair of double
quotes
*12. static String bwDoubleQuotes(String line, int index)*
//Method to return the String that is between the nth pair of single
quotes
*13. static String bwSingleQuotes(String line, int index)*
so 10 is 11 with from=to, 12 is 10 if enclosure " and 13 is 10 with
enclosure '. so don`t know about 12 and 13
//Method to return the String that is between the nth pair of given
enclosure String
*14. static String bw(String line, String enclosure, int index)*
this could be interesting to have
Too special again, imho.
//Method to check whether searchString exists within self String
ignoring
the case
*15. static boolean containsIgnoreCase(String self, String
searchString)*
//Method to check whether the String starts with the searchString
ignoring
the case
*16. static boolean startsWithIgnoreCase(String self, String
searchString)*
//Method to check whether the String ends with the searchString
ignoring the
case
*17. static boolean endsWithIgnoreCase(String self, String
searchString)*
these could be interesting because they are actually not so easy to
get right and efficient in a unicode world
Agree.
Cheers,
mg