Skip to content

Commit dd7e45f

Browse files
authored
Code cleanup: use IndexOf(char) overload (PowerShell#9722)
- Use IndexOf(char) overload instead of IndexOf(string) to benefit from Ordinal search - Replace IndexOf with Contains to get more understandable code - Use StringComparison.Ordinal for ASCII chars
1 parent a5e27de commit dd7e45f

File tree

15 files changed

+35
-35
lines changed

15 files changed

+35
-35
lines changed

src/Microsoft.PowerShell.Commands.Management/commands/management/Computer.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1808,7 +1808,7 @@ internal static string GetLocalAdminUserName(string computerName, PSCredential p
18081808
}
18091809
else
18101810
{
1811-
int dotIndex = computerName.IndexOf(".", StringComparison.OrdinalIgnoreCase);
1811+
int dotIndex = computerName.IndexOf('.');
18121812
if (dotIndex == -1)
18131813
{
18141814
localUserName = computerName + "\\" + psLocalCredential.UserName;

src/Microsoft.PowerShell.Commands.Management/commands/management/ControlPanelItemCommand.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ private static bool CompareVerbActionOpen(string verbActionName)
227227
{
228228
string canonicalName = (string)item.ExtendedProperty("System.ApplicationName");
229229
canonicalName = !string.IsNullOrEmpty(canonicalName)
230-
? canonicalName.Substring(0, canonicalName.IndexOf("\0", StringComparison.OrdinalIgnoreCase))
230+
? canonicalName.Substring(0, canonicalName.IndexOf('\0'))
231231
: null;
232232

233233
if (canonicalName != null && canonicalName.Equals(RegionCanonicalName, StringComparison.OrdinalIgnoreCase))
@@ -452,7 +452,7 @@ internal List<ShellFolderItem> GetControlPanelItemByCanonicalName(List<ShellFold
452452
string path = item.Path;
453453
string canonicalName = (string)item.ExtendedProperty("System.ApplicationName");
454454
canonicalName = canonicalName != null
455-
? canonicalName.Substring(0, canonicalName.IndexOf("\0", StringComparison.OrdinalIgnoreCase))
455+
? canonicalName.Substring(0, canonicalName.IndexOf('\0'))
456456
: null;
457457

458458
if (canonicalName == null)
@@ -640,7 +640,7 @@ protected override void ProcessRecord()
640640
string description = (string)item.ExtendedProperty("InfoTip");
641641
string canonicalName = (string)item.ExtendedProperty("System.ApplicationName");
642642
canonicalName = canonicalName != null
643-
? canonicalName.Substring(0, canonicalName.IndexOf("\0", StringComparison.OrdinalIgnoreCase))
643+
? canonicalName.Substring(0, canonicalName.IndexOf('\0'))
644644
: null;
645645
int[] categories = (int[])item.ExtendedProperty("System.ControlPanel.Category");
646646
string[] cateStrings = new string[categories.Length];

src/Microsoft.PowerShell.Commands.Management/commands/management/ParsePathCommand.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ protected override void ProcessRecord()
300300
continue;
301301

302302
case qualifierSet:
303-
int separatorIndex = pathsToParse[index].IndexOf(":", StringComparison.CurrentCulture);
303+
int separatorIndex = pathsToParse[index].IndexOf(':');
304304

305305
if (separatorIndex < 0)
306306
{
@@ -449,7 +449,7 @@ private string RemoveQualifier(string path)
449449

450450
if (SessionState.Path.IsProviderQualified(path))
451451
{
452-
int index = path.IndexOf("::", StringComparison.CurrentCulture);
452+
int index = path.IndexOf("::", StringComparison.Ordinal);
453453

454454
if (index != -1)
455455
{

src/System.Management.Automation/engine/CommandCompletion/CompletionCompleters.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6600,7 +6600,7 @@ internal static void CompleteMemberHelper(
66006600
}
66016601

66026602
string tooltip = memberInfo.ToString();
6603-
if (tooltip.IndexOf("),", StringComparison.OrdinalIgnoreCase) != -1)
6603+
if (tooltip.IndexOf("),", StringComparison.Ordinal) != -1)
66046604
{
66056605
var overloads = tooltip.Split(new[] { ")," }, StringSplitOptions.RemoveEmptyEntries);
66066606
var newTooltip = new StringBuilder();

src/System.Management.Automation/engine/LanguagePrimitives.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1505,7 +1505,7 @@ internal static object GetConverter(Type type, TypeTable backupTypeTable)
15051505

15061506
private static object NewConverterInstance(string assemblyQualifiedTypeName)
15071507
{
1508-
int typeSeparator = assemblyQualifiedTypeName.IndexOf(",", StringComparison.Ordinal);
1508+
int typeSeparator = assemblyQualifiedTypeName.IndexOf(',');
15091509
if (typeSeparator == -1)
15101510
{
15111511
typeConversion.WriteLine("Type name \"{0}\" should be assembly qualified.", assemblyQualifiedTypeName);

src/System.Management.Automation/engine/Modules/ModuleCmdletBase.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4680,7 +4680,7 @@ internal static bool IsRooted(string filePath)
46804680
filePath.StartsWith(@"../", StringComparison.Ordinal) ||
46814681
filePath.StartsWith(@"~/", StringComparison.Ordinal) ||
46824682
filePath.StartsWith(@"~\", StringComparison.Ordinal) ||
4683-
filePath.IndexOf(":", StringComparison.Ordinal) >= 0);
4683+
filePath.Contains(':'));
46844684
}
46854685

46864686
/// <summary>

src/System.Management.Automation/engine/ParameterSetInfo.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ internal static string GetParameterTypeString(Type type, IEnumerable<Attribute>
292292
}
293293

294294
// If the type is really an array, but the typename didn't include [], then add it.
295-
if (type.IsArray && (parameterTypeString.IndexOf("[]", StringComparison.OrdinalIgnoreCase) == -1))
295+
if (type.IsArray && (parameterTypeString.IndexOf("[]", StringComparison.Ordinal) == -1))
296296
{
297297
var t = type;
298298
while (t.IsArray)

src/System.Management.Automation/engine/parser/ast.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -8349,7 +8349,7 @@ internal Type GetGenericType(Type generic)
83498349
{
83508350
if (generic == null || !generic.ContainsGenericParameters)
83518351
{
8352-
if (TypeName.FullName.IndexOf("`", StringComparison.OrdinalIgnoreCase) == -1)
8352+
if (!TypeName.FullName.Contains('`'))
83538353
{
83548354
var newTypeName = new TypeName(Extent,
83558355
string.Format(CultureInfo.InvariantCulture, "{0}`{1}", TypeName.FullName, GenericArguments.Count));
@@ -8376,7 +8376,7 @@ public Type GetReflectionAttributeType()
83768376
Type generic = TypeName.GetReflectionAttributeType();
83778377
if (generic == null || !generic.ContainsGenericParameters)
83788378
{
8379-
if (TypeName.FullName.IndexOf("`", StringComparison.OrdinalIgnoreCase) == -1)
8379+
if (!TypeName.FullName.Contains('`'))
83808380
{
83818381
var newTypeName = new TypeName(Extent,
83828382
string.Format(CultureInfo.InvariantCulture, "{0}Attribute`{1}", TypeName.FullName, GenericArguments.Count));

src/System.Management.Automation/engine/remoting/commands/CustomShellCommands.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5436,7 +5436,7 @@ protected override void BeginProcessing()
54365436

54375437
if (!string.IsNullOrEmpty(this.Username))
54385438
{
5439-
if (this.Username.IndexOf("\\", StringComparison.OrdinalIgnoreCase) >= 0)
5439+
if (this.Username.Contains('\\'))
54405440
{
54415441
validator = null;
54425442

src/System.Management.Automation/engine/remoting/common/RunspaceConnectionInfo.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1285,8 +1285,8 @@ private void UpdateUri(Uri uri)
12851285
(RemotingErrorIdStrings.RelativeUriForRunspacePathNotSupported));
12861286
}
12871287

1288-
if (uri.OriginalString.LastIndexOf(":", StringComparison.OrdinalIgnoreCase) >
1289-
uri.AbsoluteUri.IndexOf("//", StringComparison.OrdinalIgnoreCase))
1288+
if (uri.OriginalString.LastIndexOf(':') >
1289+
uri.AbsoluteUri.IndexOf("//", StringComparison.Ordinal))
12901290
{
12911291
UseDefaultWSManPort = false;
12921292
}
@@ -1296,7 +1296,7 @@ private void UpdateUri(Uri uri)
12961296
// http://localhost , http://127.0.0.1 etc.
12971297
string appname;
12981298

1299-
if (uri.AbsolutePath.Equals("/", StringComparison.OrdinalIgnoreCase) &&
1299+
if (uri.AbsolutePath.Equals("/", StringComparison.Ordinal) &&
13001300
string.IsNullOrEmpty(uri.Query) && string.IsNullOrEmpty(uri.Fragment))
13011301
{
13021302
appname = s_defaultAppName;

src/System.Management.Automation/help/SaveHelpCommand.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ internal override bool ProcessModuleWithCulture(UpdatableHelpModuleInfo module,
192192
{
193193
// Deal with wildcards
194194

195-
int index = path.IndexOf("*", StringComparison.OrdinalIgnoreCase);
195+
int index = path.IndexOf('*');
196196

197197
if (index == 0)
198198
{

src/System.Management.Automation/namespaces/FileSystemProvider.cs

+7-7
Original file line numberDiff line numberDiff line change
@@ -5337,13 +5337,13 @@ private string RemoveRelativeTokens(string path)
53375337
{
53385338
string testPath = path.Replace('/', '\\');
53395339
if (
5340-
(testPath.IndexOf("\\", StringComparison.OrdinalIgnoreCase) < 0) ||
5341-
testPath.StartsWith(".\\", StringComparison.OrdinalIgnoreCase) ||
5342-
testPath.StartsWith("..\\", StringComparison.OrdinalIgnoreCase) ||
5343-
testPath.EndsWith("\\.", StringComparison.OrdinalIgnoreCase) ||
5344-
testPath.EndsWith("\\..", StringComparison.OrdinalIgnoreCase) ||
5345-
(testPath.IndexOf("\\.\\", StringComparison.OrdinalIgnoreCase) > 0) ||
5346-
(testPath.IndexOf("\\..\\", StringComparison.OrdinalIgnoreCase) > 0))
5340+
!testPath.Contains('\\') ||
5341+
testPath.StartsWith(".\\", StringComparison.Ordinal) ||
5342+
testPath.StartsWith("..\\", StringComparison.Ordinal) ||
5343+
testPath.EndsWith("\\.", StringComparison.Ordinal) ||
5344+
testPath.EndsWith("\\..", StringComparison.Ordinal) ||
5345+
testPath.Contains("\\.\\", StringComparison.Ordinal) ||
5346+
testPath.Contains("\\..\\", StringComparison.Ordinal))
53475347
{
53485348
try
53495349
{

src/System.Management.Automation/namespaces/LocationGlobber.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1506,7 +1506,7 @@ internal static bool IsAbsolutePath(string path)
15061506
break;
15071507
}
15081508

1509-
int index = path.IndexOf(":", StringComparison.Ordinal);
1509+
int index = path.IndexOf(':');
15101510

15111511
if (index == -1)
15121512
{
@@ -1604,7 +1604,7 @@ internal bool IsAbsolutePath(string path, out string driveName)
16041604
break;
16051605
}
16061606

1607-
int index = path.IndexOf(":", StringComparison.Ordinal);
1607+
int index = path.IndexOf(':');
16081608

16091609
if (index == -1)
16101610
{
@@ -1863,7 +1863,7 @@ internal string GetDriveRootRelativePathFromPSPath(
18631863
string normalizedRoot = _sessionState.Drive.Current.Root.Replace(
18641864
StringLiterals.AlternatePathSeparator, StringLiterals.DefaultPathSeparator);
18651865

1866-
if (normalizedRoot.IndexOf(":", StringComparison.Ordinal) >= 0)
1866+
if (normalizedRoot.Contains(':'))
18671867
{
18681868
string normalizedPath = path.Replace(StringLiterals.AlternatePathSeparator, StringLiterals.DefaultPathSeparator);
18691869
if (normalizedPath.StartsWith(normalizedRoot, StringComparison.OrdinalIgnoreCase))
@@ -3160,7 +3160,7 @@ private static string RemoveDriveQualifier(string path)
31603160

31613161
// Find the drive separator only if it's before a path separator
31623162

3163-
int index = path.IndexOf(":", StringComparison.Ordinal);
3163+
int index = path.IndexOf(':');
31643164
if (index != -1)
31653165
{
31663166
int separator = path.IndexOf(StringLiterals.DefaultPathSeparator, 0, index);

src/System.Management.Automation/namespaces/RegistryProvider.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -2958,7 +2958,7 @@ private string NormalizePath(string path)
29582958
private bool HasRelativePathTokens(string path)
29592959
{
29602960
return (
2961-
(path.IndexOf("\\", StringComparison.OrdinalIgnoreCase) == 0) ||
2961+
path.StartsWith('\\') ||
29622962
path.Contains("\\.\\") ||
29632963
path.Contains("\\..\\") ||
29642964
path.EndsWith("\\..", StringComparison.OrdinalIgnoreCase) ||
@@ -3332,12 +3332,12 @@ private bool CreateIntermediateKeys(string path)
33323332

33333333
path = NormalizePath(path);
33343334

3335-
int index = path.IndexOf("\\", StringComparison.Ordinal);
3335+
int index = path.IndexOf('\\');
33363336
if (index == 0)
33373337
{
33383338
// The user may precede a path with \
33393339
path = path.Substring(1);
3340-
index = path.IndexOf("\\", StringComparison.Ordinal);
3340+
index = path.IndexOf('\\');
33413341
}
33423342

33433343
if (index == -1)
@@ -3522,14 +3522,14 @@ private IRegistryWrapper GetRegkeyForPath(string path, bool writeAccess)
35223522

35233523
do // false loop
35243524
{
3525-
int index = path.IndexOf("\\", StringComparison.Ordinal);
3525+
int index = path.IndexOf('\\');
35263526

35273527
if (index == 0)
35283528
{
35293529
// The user may proceed a path with \
35303530

35313531
path = path.Substring(1);
3532-
index = path.IndexOf("\\", StringComparison.Ordinal);
3532+
index = path.IndexOf('\\');
35333533
}
35343534

35353535
if (index == -1)

src/System.Management.Automation/namespaces/TransactedRegistryKey.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2037,15 +2037,15 @@ private static void ValidateKeyName(string name)
20372037
throw new ArgumentNullException(RegistryProviderStrings.Arg_Name);
20382038
}
20392039

2040-
int nextSlash = name.IndexOf("\\", StringComparison.OrdinalIgnoreCase);
2040+
int nextSlash = name.IndexOf('\\');
20412041
int current = 0;
20422042
while (nextSlash != -1)
20432043
{
20442044
if ((nextSlash - current) > MaxKeyLength)
20452045
throw new ArgumentException(RegistryProviderStrings.Arg_RegKeyStrLenBug);
20462046

20472047
current = nextSlash + 1;
2048-
nextSlash = name.IndexOf("\\", current, StringComparison.OrdinalIgnoreCase);
2048+
nextSlash = name.IndexOf('\\', current);
20492049
}
20502050

20512051
if ((name.Length - current) > MaxKeyLength)

0 commit comments

Comments
 (0)