diff --git a/src/core/CCString.ml b/src/core/CCString.ml index 260d9d69..240f9e06 100644 --- a/src/core/CCString.ml +++ b/src/core/CCString.ml @@ -585,6 +585,24 @@ let take n s = else s +let take_while p s = + let i = ref 0 in + while !i < String.length s && p (String.unsafe_get s !i) do + incr i + done; + String.sub s 0 !i + +let rtake_while p s = + let s_len_pred = String.length s - 1 in + let i = ref s_len_pred in + while !i >= 0 && p (String.unsafe_get s !i) do + decr i + done ; + if !i < s_len_pred + then String.sub s (!i + 1) (s_len_pred - !i) + else + "" + let drop n s = if n < String.length s then String.sub s n (String.length s - n)