Let's make sure there is: - a real world use case, as opposed nice-to-have in an imaginary app - doesn't duplicate anything in Commons Lang or Text.
Gary On Sat, Aug 2, 2025, 10:42 sebb <seb...@gmail.com> wrote: > On Sat, 2 Aug 2025 at 15:08, Gilles Sadowski <gillese...@gmail.com> wrote: > > > > Hi. > > > > Le sam. 2 août 2025 à 14:53, Kunal Bhangale > > <bhangalekunal2631...@gmail.com> a écrit : > > > > > > Hi Gilles, > > > > > > Thanks for the earlier suggestion to consider Apache Commons Text for > these > > > utility methods. > > > > > > After reviewing the project, I noticed that Commons Text doesn’t > currently > > > have a general-purpose utility class like `StringUtils` in Commons > Lang. > > > > Probably rightly so, because "...Utils" classes are better avoided.[1] > > > > > > > > I’d like to ask: > > > Would it be appropriate to introduce a new class such as `TextUtils` > under > > > the `org.apache.commons.text` package to house general-purpose > text-related > > > utility methods (like smart truncation, word counting, title casing, > etc.)? > > > > Each of the examples inside the parentheses should be discussed > separately > > in order to determine whether they are "general-purpose". Indeed, each > of > > * smart truncation > > * word counting > > * title casing > > has specific features and potential variants that > > * either warrant a class of its own (e.g. "truncation"), > > * or may be too ill-defined (e.g. capitalization of a title depends on > the > > language) to belong in a general-purpose library. > > > > Also, we should beware of implementing functionality that already exists > > (such as "countWords"[2]) > > Agreed. > > It would be helpful to provide some real-world use cases. > As well as helping to justify adding the new methods, these could be > used as some of the test cases. > > > Regards, > > Gilles > > > > [1] https://stackoverflow.com/questions/3340032/are-utility-classes-evil > > [2] > https://stackoverflow.com/questions/5864159/count-words-in-a-string-method > > > > > > > > Alternatively, is there an existing class where such methods would be > more > > > appropriate? > > > > > > Looking forward to your suggestions and guidance on this. > > > > > > Best regards, > > > Kunal Bhangale > > > > > > On Sat, Aug 2, 2025 at 2:41 PM Gilles Sadowski <gillese...@gmail.com> > wrote: > > > > > > > Hi. > > > > > > > > Le sam. 2 août 2025 à 10:55, Kunal Bhangale > > > > <bhangalekunal2631...@gmail.com> a écrit : > > > > > > > > > > Hi Commons Lang Developers, > > > > > > > > > > I would like to propose the addition of some new utility methods to > > > > > `StringUtils` in Apache Commons Lang. These methods are commonly > needed > > > > in > > > > > real-world projects but currently not available in the library. > > > > > > > > > > Here are some initial ideas: > > > > > > > > > > > > > > > 1. *findAllOccurrences(String str, String subStr)* > > > > > - Description: Returns a list of all indexes where a substring > occurs > > > > in > > > > > the main string. > > > > > - Example: findAllOccurrences("abcabc", "a") → [0, 3] > > > > > > > > > > 2. *toTitleCase(String str)* > > > > > - Description: Converts each word's first character to > uppercase and > > > > the > > > > > rest to lowercase. > > > > > - Example: toTitleCase("hello world") → "Hello World" > > > > > > > > > > 3. *smartTruncate(String str, int maxLength)* > > > > > - Description: Truncates the string to the nearest full word > under the > > > > > limit and appends "..." if needed. > > > > > - Example: smartTruncate("This is a long sentence", 10) → "This > is..." > > > > > > > > > > 4. *removeRepeatedCharacters(String str)* > > > > > - Description: Removes consecutive duplicate characters. > > > > > - Example: removeRepeatedCharacters("aaabbbcccaaa") → "abca" > > > > > > > > > > 5. *isTitleCase(String str)* > > > > > - Description: Checks if the input is in title case format. > > > > > - Example: isTitleCase("Hello World") → true > > > > > > > > > > 6. *countWords(String str)* > > > > > - Description: Returns the number of words in the input string. > > > > > - Example: countWords("Apache Commons Lang") → 3 > > > > > > > > > > > > > > > I’d be happy to implement these methods and write appropriate JUnit > > > > tests. > > > > > If the community finds these valuable, I can create a JIRA issue > and > > > > start > > > > > working on the patch. > > > > > > > > Thanks for your interest in contributing to "Commons". > > > > > > > > > Looking forward to your feedback! > > > > > > > > Your proposed utilities seem better suited to [Text] than [Lang]. > > > > Did you have a look there: > > > > https://commons.apache.org/text > > > > ? > > > > > > > > Regards, > > > > Gilles > > > > > > > > --------------------------------------------------------------------- > > > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > > > > For additional commands, e-mail: dev-h...@commons.apache.org > > > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > > For additional commands, e-mail: dev-h...@commons.apache.org > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > >