Refactor Escape() method#18230
Conversation
Exclude using LINQ and Utils.Separators.StarOrQuestion Update tests
|
|
||
| string s = null; | ||
| char ch = pattern[i]; | ||
| if (ch == '[' || ch == ']') |
There was a problem hiding this comment.
| if (ch == '[' || ch == ']') | |
| if (ch is '[' or ']') |
There was a problem hiding this comment.
@xtqqczze The PR is only for removing Utils.Separators.StarOrQuestion. No plans for style changes.
| // if it is a wildcard char, escape it | ||
| // | ||
| if (IsWildcardChar(ch) && !charsNotToEscape.Contains(ch)) | ||
| for (int i = 0; i < pattern.Length; i++) |
There was a problem hiding this comment.
| for (int i = 0; i < pattern.Length; i++) | |
| foreach (char ch in pattern) |
| else | ||
| { | ||
| s = new string(temp.Slice(0, tempIndex)); | ||
| for (int i = 0; i < pattern.Length; i++) |
There was a problem hiding this comment.
| for (int i = 0; i < pattern.Length; i++) | |
| foreach (char ch in pattern) |
| @@ -233,33 +222,34 @@ internal static string Escape(string pattern, char[] charsNotToEscape) | |||
| Span<char> temp = pattern.Length < StackAllocThreshold ? stackalloc char[pattern.Length * 2 + 1] : new char[pattern.Length * 2 + 1]; | |||
There was a problem hiding this comment.
This looks like a existing bug, the condition should probably have been pattern.Length * 2 < StackAllocThreshold.
I suggest refactoring to the recommended pattern (and in Unescape too):
| Span<char> temp = pattern.Length < StackAllocThreshold ? stackalloc char[pattern.Length * 2 + 1] : new char[pattern.Length * 2 + 1]; | |
| int lengthRequired = pattern.Length * 2 + 1; | |
| Span<char> temp = lengthRequired <= StackAllocThreshold ? stackalloc char[StackAllocThreshold] : new char[lengthRequired]; |
|
This PR has Quantification details
Why proper sizing of changes matters
Optimal pull request sizes drive a better predictable PR flow as they strike a
What can I do to optimize my changes
How to interpret the change counts in git diff output
Was this comment helpful? 👍 :ok_hand: :thumbsdown: (Email) |
|
This pull request has been automatically marked as Review Needed because it has been there has not been any activity for 7 days. |
PR Summary
Moved from #18154
Exclude using LINQ and Utils.Separators.StarOrQuestion (the const is not removed in the PR to avoid merge conflitcs).
PR Context
PR Checklist
.h,.cpp,.cs,.ps1and.psm1files have the correct copyright headerWIP:or[ WIP ]to the beginning of the title (theWIPbot will keep its status check atPendingwhile the prefix is present) and remove the prefix when the PR is ready.(which runs in a different PS Host).