Add ContainsIgnoreCase helper to reduce string alloc, cleanup

This commit is contained in:
Sinai
2021-04-30 23:43:27 +10:00
parent 74ff1d8f01
commit d76bc1f812
8 changed files with 34 additions and 21 deletions

View File

@ -17,13 +17,13 @@ namespace UnityExplorer.Core.Search
var nameFilter = "";
if (!string.IsNullOrEmpty(input))
nameFilter = input.ToLower();
nameFilter = input;
foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var type in asm.TryGetTypes().Where(it => it.IsSealed && it.IsAbstract))
{
if (!string.IsNullOrEmpty(nameFilter) && !type.FullName.ToLower().Contains(nameFilter))
if (!string.IsNullOrEmpty(nameFilter) && !type.FullName.ContainsIgnoreCase(nameFilter))
continue;
list.Add(type);
@ -53,7 +53,7 @@ namespace UnityExplorer.Core.Search
var nameFilter = "";
if (!string.IsNullOrEmpty(input))
nameFilter = input.ToLower();
nameFilter = input;
var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static;
@ -64,7 +64,7 @@ namespace UnityExplorer.Core.Search
{
try
{
if (!string.IsNullOrEmpty(nameFilter) && !type.FullName.ToLower().Contains(nameFilter))
if (!string.IsNullOrEmpty(nameFilter) && !type.FullName.ContainsIgnoreCase(nameFilter))
continue;
ReflectionProvider.Instance.FindSingleton(s_instanceNames, type, flags, instances);
@ -138,7 +138,7 @@ namespace UnityExplorer.Core.Search
string nameFilter = null;
if (!string.IsNullOrEmpty(input))
nameFilter = input.ToLower();
nameFilter = input;
bool canGetGameObject = (sceneFilter != SceneFilter.Any || childFilter != ChildFilter.Any)
&& (context == SearchContext.GameObject || typeof(Component).IsAssignableFrom(searchType));
@ -152,7 +152,7 @@ namespace UnityExplorer.Core.Search
foreach (var obj in allObjects)
{
// name check
if (!string.IsNullOrEmpty(nameFilter) && !obj.name.ToLower().Contains(nameFilter))
if (!string.IsNullOrEmpty(nameFilter) && !obj.name.ContainsIgnoreCase(nameFilter))
continue;
if (canGetGameObject)

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
namespace UnityExplorer
{
public static class MiscUtility
{
private static CultureInfo _enCulture = new CultureInfo("en-US");
public static bool ContainsIgnoreCase(this string _this, string s)
{
return _enCulture.CompareInfo.IndexOf(_this, s, CompareOptions.IgnoreCase) >= 0;
}
}
}