From 001d7bfa174dc8097268bf41368c84474aafcd3a Mon Sep 17 00:00:00 2001 From: Graydon Hoare Date: Mon, 3 Jan 2011 20:39:33 -0800 Subject: Add _str.starts_with and ends_with. --- src/lib/_str.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src') diff --git a/src/lib/_str.rs b/src/lib/_str.rs index 55fe1142..6b7ac018 100644 --- a/src/lib/_str.rs +++ b/src/lib/_str.rs @@ -188,6 +188,35 @@ fn find(str haystack, str needle) -> int { ret -1; } +fn starts_with(str haystack, str needle) -> bool { + let uint haystack_len = byte_len(haystack); + let uint needle_len = byte_len(needle); + if (needle_len == 0u) { + ret true; + } + if (needle_len > haystack_len) { + ret false; + } + ret eq(substr(haystack, 0u, needle_len), needle); +} + + +fn ends_with(str haystack, str needle) -> bool { + let uint haystack_len = byte_len(haystack); + let uint needle_len = byte_len(needle); + if (needle_len == 0u) { + ret true; + } + if (needle_len > haystack_len) { + ret false; + } + ret eq(substr(haystack, + haystack_len - needle_len, + needle_len), + needle); +} + + fn substr(str s, uint begin, uint len) -> str { let str accum = ""; let uint i = begin; -- cgit v1.2.3