I’ve recently done work with having to deal with names and some of these methods could be useful I would think. The unit tests would probably provide some good examples of real world use cases. No harm in creating a Jira and a PR to start.
-Rob > On Aug 2, 2025, at 10:57 AM, Gary Gregory <garydgreg...@gmail.com> wrote: > > 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 >> >> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org