mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-18 16:10:26 +02:00
Modified StartWith/EndsWith char32 version
This commit is contained in:
parent
a43d7ca991
commit
1f77412536
1 changed files with 17 additions and 15 deletions
|
@ -1716,6 +1716,15 @@ namespace System
|
||||||
return Ptr[0] == c;
|
return Ptr[0] == c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool StartsWith(char32 c)
|
||||||
|
{
|
||||||
|
if (c < '\x80')
|
||||||
|
return StartsWith((char8)c);
|
||||||
|
if (mLength == 0)
|
||||||
|
return false;
|
||||||
|
return UTF8.Decode(Ptr, mLength).c == c;
|
||||||
|
}
|
||||||
|
|
||||||
public bool EndsWith(char8 c)
|
public bool EndsWith(char8 c)
|
||||||
{
|
{
|
||||||
if (mLength == 0)
|
if (mLength == 0)
|
||||||
|
@ -1725,22 +1734,15 @@ namespace System
|
||||||
|
|
||||||
public bool EndsWith(char32 c)
|
public bool EndsWith(char32 c)
|
||||||
{
|
{
|
||||||
int encodedLen = UTF8.GetEncodedLength(c);
|
if (c < '\x80')
|
||||||
char8* ptr = Ptr;
|
return EndsWith((char8)c);
|
||||||
if (mLength == 0)
|
if (mLength == 0)
|
||||||
return false;
|
return false;
|
||||||
let (c32, _) = UTF8.Decode(ptr + mLength - 1 * encodedLen, encodedLen);
|
|
||||||
return c32 == c;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool StartsWith(char32 c)
|
|
||||||
{
|
|
||||||
int encodedLen = UTF8.GetEncodedLength(c);
|
|
||||||
char8* ptr = Ptr;
|
char8* ptr = Ptr;
|
||||||
if (mLength == 0)
|
int idx = mLength - 1;
|
||||||
return false;
|
while ((idx > 0) && ((uint8)ptr[idx] & 0xC0 == 0x80))
|
||||||
let (c32, _) = UTF8.Decode(ptr, encodedLen);
|
idx--;
|
||||||
return c32 == c;
|
return UTF8.Decode(ptr + idx, mLength - idx).c == c;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ReplaceLargerHelper(String find, String replace)
|
public void ReplaceLargerHelper(String find, String replace)
|
||||||
|
@ -2117,7 +2119,7 @@ namespace System
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public (char32 c, int len) GetChar32(int idx)
|
public (char32 c, int8 len) GetChar32(int idx)
|
||||||
{
|
{
|
||||||
Debug.Assert((uint)idx < (uint)mLength);
|
Debug.Assert((uint)idx < (uint)mLength);
|
||||||
char8* ptr = Ptr;
|
char8* ptr = Ptr;
|
||||||
|
@ -2129,7 +2131,7 @@ namespace System
|
||||||
return UTF8.Decode(ptr + idx, mLength - idx);
|
return UTF8.Decode(ptr + idx, mLength - idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
public (char32 c, int idx, int len) GetChar32WithBacktrack(int idx)
|
public (char32 c, int idx, int8 len) GetChar32WithBacktrack(int idx)
|
||||||
{
|
{
|
||||||
Debug.Assert((uint)idx < (uint)mLength);
|
Debug.Assert((uint)idx < (uint)mLength);
|
||||||
char8* ptr = Ptr;
|
char8* ptr = Ptr;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue