From e94bee0fb666283a101603482448def83f2e4c8e Mon Sep 17 00:00:00 2001 From: Konloch Date: Thu, 29 Jul 2021 17:28:35 -0700 Subject: [PATCH] Better LDC Search Strings should be searched with case sensitivity rather than exact comparison --- .../bytecodeviewer/searching/impl/LDCSearch.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/LDCSearch.java b/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/LDCSearch.java index 66a02352..e6cafad8 100644 --- a/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/LDCSearch.java +++ b/src/main/java/the/bytecode/club/bytecodeviewer/searching/impl/LDCSearch.java @@ -70,10 +70,11 @@ public class LDCSearch implements SearchTypeDetails @Override public void search(final ResourceContainer container, final ClassNode node, final SearchResultNotifier srn, - boolean exact) + boolean caseSensitive) { final Iterator methods = node.methods.iterator(); final String srchText = searchText.getText(); + final String srchTextLowerCase = searchText.getText().toLowerCase(); if (srchText.isEmpty()) return; @@ -97,7 +98,14 @@ public class LDCSearch implements SearchTypeDetails desc2 = method.desc; } catch (ArrayIndexOutOfBoundsException ignored) { } - if ((exact && ldcString.equals(srchText)) || (!exact && ldcString.contains(srchText))) + //TODO re-add this at some point when the search pane is redone + boolean exact = false; + final boolean exactMatch = exact && ldcString.equals(srchText); + final boolean caseInsensitiveMatch = !exact && caseSensitive && ldcString.contains(srchText); + final boolean caseSensitiveMatch = !exact && !caseSensitive && ldcString.toLowerCase().contains(srchTextLowerCase); + final boolean anyMatch = exactMatch || caseInsensitiveMatch || caseSensitiveMatch; + + if (anyMatch) { srn.notifyOfResult(container.name + ">" + node.name + "." + method.name + desc2