@@ -1,4 +1,4 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Weavers> | <Weavers> | ||||
<Caseless StringComparison="Ordinal"/> | <Caseless StringComparison="Ordinal"/> | ||||
<Costura/> | <Costura/> |
@@ -5,6 +5,9 @@ using System.IO; | |||||
using System.Linq; | using System.Linq; | ||||
using System.Text; | using System.Text; | ||||
#if EXPOSE_EVERYTHING || EXPOSE_STRINGEX | |||||
public | |||||
#endif | |||||
static partial class StringEx | static partial class StringEx | ||||
{ | { | ||||
#pragma warning disable 1591 | #pragma warning disable 1591 | ||||
@@ -29,7 +32,7 @@ static partial class StringEx | |||||
public static bool IsWhiteSpace(this string value) | public static bool IsWhiteSpace(this string value) | ||||
{ | { | ||||
foreach(var c in value) | |||||
foreach (var c in value) | |||||
{ | { | ||||
if (char.IsWhiteSpace(c)) continue; | if (char.IsWhiteSpace(c)) continue; | ||||
@@ -56,6 +59,80 @@ static partial class StringEx | |||||
} | } | ||||
#endif | #endif | ||||
#if UNSAFE | |||||
public static unsafe string ToLowerForASCII(this string value) | |||||
{ | |||||
if (value.IsNullOrWhiteSpace()) | |||||
return value; | |||||
value = string.Copy(value); | |||||
fixed (char* low = value) | |||||
{ | |||||
var end = low + value.Length; | |||||
for (var p = low; p < end; p++) | |||||
{ | |||||
var c = *p; | |||||
if (c < 'A' || c > 'Z') | |||||
continue; | |||||
*p = (char)(c + 0x20); | |||||
} | |||||
} | |||||
return value; | |||||
} | |||||
public static unsafe string ToUpperForASCII(this string value) | |||||
{ | |||||
if (value.IsNullOrWhiteSpace()) | |||||
return value; | |||||
value = string.Copy(value); | |||||
fixed (char* low = value) | |||||
{ | |||||
var end = low + value.Length; | |||||
for (var p = low; p < end; p++) | |||||
{ | |||||
var c = *p; | |||||
if (c < 'a' || c > 'z') | |||||
continue; | |||||
*p = (char)(c - 0x20); | |||||
} | |||||
} | |||||
return value; | |||||
} | |||||
#else | |||||
public static string ToLowerForASCII(this string value) | |||||
{ | |||||
if (value.IsNullOrWhiteSpace()) | |||||
return value; | |||||
var sb = new StringBuilder(value.Length); | |||||
foreach (var c in value) | |||||
{ | |||||
if (c < 'A' || c > 'Z') | |||||
sb.Append(c); | |||||
else | |||||
sb.Append((char)(c + 0x20)); | |||||
} | |||||
return sb.ToString(); | |||||
} | |||||
public static string ToUpperForASCII(this string value) | |||||
{ | |||||
if (value.IsNullOrWhiteSpace()) | |||||
return value; | |||||
var sb = new StringBuilder(value.Length); | |||||
foreach (var c in value) | |||||
{ | |||||
if (c < 'a' || c > 'z') | |||||
sb.Append(c); | |||||
else | |||||
sb.Append((char)(c - 0x20)); | |||||
} | |||||
return sb.ToString(); | |||||
} | |||||
#endif | |||||
#endregion | #endregion | ||||
#region comparing | #region comparing | ||||
@@ -1,8 +1,8 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
<packages> | <packages> | ||||
<package id="Caseless.Fody" version="1.4.1" targetFramework="net40-client" developmentDependency="true" /> | |||||
<package id="Caseless.Fody" version="1.4.2" targetFramework="net40-client" developmentDependency="true" /> | |||||
<package id="Costura.Fody" version="1.3.3.0" targetFramework="net40-client" developmentDependency="true" /> | <package id="Costura.Fody" version="1.3.3.0" targetFramework="net40-client" developmentDependency="true" /> | ||||
<package id="Fody" version="1.29.4" targetFramework="net40-client" developmentDependency="true" /> | <package id="Fody" version="1.29.4" targetFramework="net40-client" developmentDependency="true" /> | ||||
<package id="Newtonsoft.Json" version="8.0.2" targetFramework="net40-client" /> | |||||
<package id="StringEx.CS" version="0.2" targetFramework="net40-client" /> | |||||
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net40-client" /> | |||||
<package id="StringEx.CS" version="0.3.1" targetFramework="net40-client" developmentDependency="true" /> | |||||
</packages> | </packages> |
@@ -67,8 +67,8 @@ | |||||
<ItemGroup> | <ItemGroup> | ||||
<Reference Include="Microsoft.CSharp" /> | <Reference Include="Microsoft.CSharp" /> | ||||
<Reference Include="Microsoft.VisualBasic" /> | <Reference Include="Microsoft.VisualBasic" /> | ||||
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> | |||||
<HintPath>3rd\Newtonsoft.Json.8.0.2\lib\net40\Newtonsoft.Json.dll</HintPath> | |||||
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> | |||||
<HintPath>3rd\Newtonsoft.Json.9.0.1\lib\net40\Newtonsoft.Json.dll</HintPath> | |||||
<Private>True</Private> | <Private>True</Private> | ||||
</Reference> | </Reference> | ||||
<Reference Include="PresentationCore" /> | <Reference Include="PresentationCore" /> | ||||