From d17b016397ee3ba2c22cb3743be2f683c97aad08 Mon Sep 17 00:00:00 2001 From: Damian Day Date: Tue, 26 May 2020 20:04:06 +0100 Subject: [PATCH] IndexOfAny Implemented IndexOfAny for String and StringView. --- BeefLibs/corlib/src/String.bf | 52 +++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/BeefLibs/corlib/src/String.bf b/BeefLibs/corlib/src/String.bf index 690953a1..a3ca6957 100644 --- a/BeefLibs/corlib/src/String.bf +++ b/BeefLibs/corlib/src/String.bf @@ -1277,6 +1277,32 @@ namespace System return -1; } + public int IndexOfAny(char8[] targets) + { + return IndexOfAny(targets, 0, mLength); + } + + public int IndexOfAny(char8[] targets, int startIdx) + { + return IndexOfAny(targets, startIdx, mLength - startIdx); + } + + public int IndexOfAny(char8[] targets, int startIdx, int count) + { + let ptr = Ptr; + for (var i = startIdx; i < count; i++) + { + let ch = ptr[i]; + for (let tag in targets) + { + if (ch == tag) + return i; + } + } + + return -1; + } + public bool Contains(String str) { return IndexOf(str) != -1; @@ -2922,6 +2948,32 @@ namespace System return -1; } + public int IndexOfAny(char8[] targets) + { + return IndexOfAny(targets, 0, mLength); + } + + public int IndexOfAny(char8[] targets, int startIdx) + { + return IndexOfAny(targets, startIdx, mLength - startIdx); + } + + public int IndexOfAny(char8[] targets, int startIdx, int count) + { + let ptr = mPtr; + for (var i = startIdx; i < count; i++) + { + let ch = ptr[i]; + for (let tag in targets) + { + if (ch == tag) + return i; + } + } + + return -1; + } + public bool Contains(char8 c) { for (int i = 0; i < mLength; i++)