Clojure

Add starts-with? and ends-with? to clojure.string

Details

  • Type: Enhancement Enhancement
  • Status: Open Open
  • Priority: Minor Minor
  • Resolution: Unresolved
  • Affects Version/s: Release 1.6
  • Fix Version/s: None
  • Component/s: None
  • Labels:
  • Approval:
    Triaged

Description

Add clojure.string/starts-with? and ends-with? similar to java.lang.String's startsWith/endsWith. In addition to making these easier to find and use, this provides a place to add a portable ClojureScript variant.

Activity

Hide
Alex Miller added a comment -

Re substring, there is a clojure.core/subs for this (predates the string ns I believe).

clojure.core/subs
([s start] [s start end])
Returns the substring of s beginning at start inclusive, and ending
at end (defaults to length of string), exclusive.

Show
Alex Miller added a comment - Re substring, there is a clojure.core/subs for this (predates the string ns I believe). clojure.core/subs ([s start] [s start end]) Returns the substring of s beginning at start inclusive, and ending at end (defaults to length of string), exclusive.
Alex Miller made changes -
Field Original Value New Value
Approval Triaged [ 10120 ]
Labels string
Alex Miller made changes -
Description While `clojure.string` wraps most of `java.lang.String`'s method, for some reason `startsWith` and `endsWith` were left out. Sure, in Java, one can use them fairly easy via the interop, but what if you're using ClojureScript (JavaScript's String class has not methods)? There's also the question of inconsistency, as the criteria by which String method were chosen for wrapping is unclear.

Should you approve this for inclusion I'd happily implement it.

P.S. The omission of `substring` is also a bit puzzling.
Add clojure.string/starts-with? and ends-with? similar to java.lang.String's startsWith/endsWith. In addition to making these easier to find and use, this provides a place to add a portable ClojureScript variant.
Hide
Jozef Wagner added a comment -

As strings are collection of characters, you can use Clojure's sequence facilities to achieve such functionality:

user=> (= (first "asdf") \a)
true
user=> (= (last "asdf") \a)
false
Show
Jozef Wagner added a comment - As strings are collection of characters, you can use Clojure's sequence facilities to achieve such functionality:
user=> (= (first "asdf") \a)
true
user=> (= (last "asdf") \a)
false
Hide
Alex Miller added a comment -

Jozef, String.startsWith() checks for a prefix string, not just a prefix char.

Show
Alex Miller added a comment - Jozef, String.startsWith() checks for a prefix string, not just a prefix char.
Hide
Bozhidar Batsov added a comment -

Re substring, I know about subs, but it seems very odd that it's not in the string ns. After all most people will likely look for string-related functionality in clojure.string. I think it'd be best if `subs` was added to clojure.string and clojure.core/subs was deprecated.

Show
Bozhidar Batsov added a comment - Re substring, I know about subs, but it seems very odd that it's not in the string ns. After all most people will likely look for string-related functionality in clojure.string. I think it'd be best if `subs` was added to clojure.string and clojure.core/subs was deprecated.

People

Vote (1)
Watch (0)

Dates

  • Created:
    Updated: