aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/_str.rs29
1 files changed, 29 insertions, 0 deletions
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;