update to c# 8.0 syntax, mostly for .Substring()

This commit is contained in:
13xforever 2019-11-06 03:45:31 +05:00
parent 5b9ad81dbe
commit 15ed3a64fe
22 changed files with 51 additions and 54 deletions

View File

@ -82,7 +82,7 @@ namespace CompatApiClient
{
var query = uri.IsAbsoluteUri ? uri.Query : new Uri(FakeHost, uri).Query;
if (!string.IsNullOrEmpty(query) && query.Length > 1)
query = query.Substring(1) + "&" + queryToAppend;
query = query[1..] + "&" + queryToAppend;
else
query = queryToAppend;
return SetQueryValue(uri, query);
@ -102,7 +102,7 @@ namespace CompatApiClient
uri = new Uri(FakeHost, uri);
var builder = new UriBuilder(uri) { Query = value };
var additionalStrip = startWithSlash ? 0 : 1;
var newUri = builder.ToString().Substring(FakeHost.OriginalString.Length + additionalStrip);
var newUri = builder.ToString()[(FakeHost.OriginalString.Length + additionalStrip)..];
return new Uri(newUri, UriKind.Relative);
}
}

View File

@ -14,7 +14,7 @@ namespace CompatApiClient.Utils
return str;
if (str.Length > maxLength)
return str.Substring(0, maxLength - 1) + "…";
return str[..(maxLength - 1)] + "…";
return str;
}
@ -27,7 +27,7 @@ namespace CompatApiClient.Utils
if (string.IsNullOrEmpty(str) || str.Length <= maxLength)
return str;
return str.Substring(0, maxLength);
return str[..maxLength];
}
public static string Sanitize(this string str, bool breakLinks = true, bool replaceBackTicks = false)

View File

@ -223,7 +223,7 @@ namespace IrdLibraryClient
return null;
var idx = html.LastIndexOf("</span>");
var result = html.Substring(idx + 7).Trim();
var result = html[(idx + 7)..].Trim();
if (string.IsNullOrEmpty(result))
return null;

View File

@ -427,9 +427,9 @@ namespace PsnClient
if (!string.IsNullOrEmpty(ver) && ver.Length > 4)
{
if (ver.EndsWith("00"))
ver = ver.Substring(0, 4); //4.85
ver = ver[..4]; //4.85
else
ver = ver.Substring(0, 4) + "." + ver.Substring(4).TrimEnd('0'); //4.851 -> 4.85.1
ver = ver[..4] + "." + ver[4..].TrimEnd('0'); //4.851 -> 4.85.1
}
return new FirmwareInfo { Version = ver, DownloadUrl = m.Groups["url"].Value, Locale = fwLocale};
}

View File

@ -47,7 +47,7 @@ namespace CompatBot.Commands.Converters
}
if (value.StartsWith('#'))
value = value.Substring(1);
value = value[1..];
value = value.ToLowerInvariant();
var chn = (
from g in guildList

View File

@ -510,7 +510,7 @@ namespace CompatBot.Commands
if (name.Length - lastPartIdx > 5
&& name.Substring(lastPartIdx + 1, 5).ToLowerInvariant() is string lnk
&& (lnk.StartsWith("<http") || lnk.StartsWith("http")))
return name.Substring(0, lastPartIdx);
return name[..lastPartIdx];
return name;
}

View File

@ -73,7 +73,7 @@ namespace CompatBot.Commands
var idx = term.LastIndexOf(" to ");
if (idx > 0)
{
var potentialUserId = term.Substring(idx + 4).Trim();
var potentialUserId = term[(idx + 4)..].Trim();
bool hasMention = false;
try
{
@ -84,7 +84,7 @@ namespace CompatBot.Commands
if (hasMention)
{
term = term.Substring(0, idx).TrimEnd();
term = term[..idx].TrimEnd();
var mentionResult = await LookupTerm(term).ConfigureAwait(false);
if (mentionResult.score > result.score)
result = mentionResult;

View File

@ -210,7 +210,7 @@ namespace CompatBot.Commands
{
question = question?.ToLowerInvariant() ?? "";
if (question.StartsWith("when "))
await When(ctx, question.Substring(5)).ConfigureAwait(false);
await When(ctx, question[5..]).ConfigureAwait(false);
else
{
string answer;
@ -232,7 +232,7 @@ namespace CompatBot.Commands
if (number > 1)
{
if (unit.EndsWith("ry"))
unit = unit.Substring(0, unit.Length - 1) + "ie";
unit = unit[..^1] + "ie";
unit += "s";
if (unit == "millenniums")
unit = "millennia";
@ -280,19 +280,19 @@ namespace CompatBot.Commands
var tmp = word.TrimEnd(Suffixes);
if (tmp.Length != word.Length)
{
suffix = word.Substring(tmp.Length);
suffix = word[..tmp.Length];
word = tmp;
}
tmp = word.TrimStart(Prefixes);
if (tmp.Length != word.Length)
{
result.Append(word.Substring(0, word.Length - tmp.Length));
result.Append(word[..^tmp.Length]);
word = tmp;
}
if (word.EndsWith("'s"))
{
suffix = "'s" + suffix;
word = word.Substring(0, word.Length - 2);
word = word[..^2];
}
void MakeCustomRoleRating(DiscordMember mem)
@ -307,7 +307,7 @@ namespace CompatBot.Commands
if (!string.IsNullOrEmpty(role))
{
if (role.EndsWith('s'))
role = role.Substring(0, role.Length - 1);
role = role[..^1];
var article = Vowels.Contains(role[0]) ? "n" : "";
choices = RateAnswers.Concat(Enumerable.Repeat($"Pretty fly for a{article} {role} guy", RateAnswers.Count / 20)).ToList();
choiceFlags.Add('f');
@ -385,10 +385,10 @@ namespace CompatBot.Commands
whatever = result.ToString();
var cutIdx = whatever.LastIndexOf("never mind");
if (cutIdx > -1)
whatever = whatever.Substring(cutIdx);
whatever = whatever[cutIdx..];
whatever = whatever.Replace("'s's", "'s").TrimStart(EveryTimable).Trim();
if (whatever.StartsWith("rate "))
whatever = whatever.Substring("rate ".Length);
whatever = whatever[("rate ".Length)..];
if (originalWhatever == "sonic" || originalWhatever.Contains("sonic the"))
choices = RateAnswers.Concat(Enumerable.Repeat("💩 out of 🦔", RateAnswers.Count)).Concat(new[] {"Sonic out of 🦔", "Sonic out of 10"}).ToList();

View File

@ -79,7 +79,7 @@ namespace CompatBot.Commands
var newTitle = "(๑•ิཬ•ั๑)";
var partStart = embed.Title.IndexOf(" [Part");
if (partStart > -1)
newTitle += embed.Title.Substring(partStart);
newTitle += embed.Title[partStart..];
embed.Title = newTitle;
if (!string.IsNullOrEmpty(embed.ThumbnailUrl))
embed.ThumbnailUrl = "https://cdn.discordapp.com/attachments/417347469521715210/516340151589535745/onionoff.png";
@ -88,7 +88,7 @@ namespace CompatBot.Commands
await ctx.Message.ReactWithAsync(sqvat).ConfigureAwait(false);
}
if (embeds.Count > 1 || embeds[0].Fields?.Count > 0)
embeds[embeds.Count - 1] = embeds.Last().WithFooter("Note that you need to install all listed updates one by one");
embeds[^1] = embeds.Last().WithFooter("Note that you need to install all listed updates one by one");
foreach (var embed in embeds)
await ctx.RespondAsync(embed: embed).ConfigureAwait(false);
}

View File

@ -118,11 +118,11 @@ namespace CompatBot.Commands
var alteredSearch = search.Trim();
if (alteredSearch.EndsWith("demo", StringComparison.InvariantCultureIgnoreCase))
alteredSearch = alteredSearch.Substring(0, alteredSearch.Length - 4).TrimEnd();
alteredSearch = alteredSearch[..^4].TrimEnd();
if (alteredSearch.EndsWith("trial", StringComparison.InvariantCultureIgnoreCase))
alteredSearch = alteredSearch.Substring(0, alteredSearch.Length - 5).TrimEnd();
alteredSearch = alteredSearch[..^5].TrimEnd();
if (alteredSearch.EndsWith("体験版"))
alteredSearch = alteredSearch.Substring(0, alteredSearch.Length - 3).TrimEnd();
alteredSearch = alteredSearch[..^3].TrimEnd();
if (string.IsNullOrEmpty(alteredSearch))
alteredSearch = search;

View File

@ -38,7 +38,7 @@ namespace CompatBot.Commands
if (match.Success && DateTime.TryParse(match.Groups["date"].Value, out var timestamp))
{
warning.Timestamp = timestamp.Ticks;
warning.FullReason = warning.FullReason.Substring(match.Groups["cutout"].Value.Length);
warning.FullReason = warning.FullReason[(match.Groups["cutout"].Value.Length)..];
@fixed++;
}
}

View File

@ -82,7 +82,7 @@ namespace CompatBot.Commands
endIdx = emojis.Length;
emoji = emojis.Substring(i, endIdx - i);
i = endIdx - 1;
var emojiId = ulong.Parse(emoji.Substring(emoji.LastIndexOf(':') + 1));
var emojiId = ulong.Parse(emoji[(emoji.LastIndexOf(':') + 1)..]);
de = DiscordEmoji.FromGuildEmote(ctx.Client, emojiId);
}
else

View File

@ -227,7 +227,7 @@ namespace CompatBot.EventHandlers
var linkStart = message.Content.IndexOf("http");
if (linkStart > -1)
{
var link = message.Content.Substring(linkStart).Split(linkSeparator, 2)[0];
var link = message.Content[linkStart..].Split(linkSeparator, 2)[0];
if (link.Contains(".log", StringComparison.InvariantCultureIgnoreCase) || link.Contains("rpcs3.zip", StringComparison.CurrentCultureIgnoreCase))
await channel.SendMessageAsync("If you intended to upload a log file please re-upload it directly to discord").ConfigureAwait(false);
}

View File

@ -40,7 +40,7 @@ namespace CompatBot.EventHandlers
var tableIdx = content.IndexOf("┻━┻");
if (tableIdx < 0)
tableIdx = content.IndexOf("┻━┻");
var faceIdx = content.Substring(0, tableIdx).LastIndexOfAny(OpenParen);
var faceIdx = content[..tableIdx].LastIndexOfAny(OpenParen);
var face = content.Substring(faceIdx, tableIdx - faceIdx);
if (face.Length > 30)
return;
@ -60,8 +60,8 @@ namespace CompatBot.EventHandlers
return;
var faceLength = reverseFace.Length;
if (faceLength > 5+4)
reverseFace = $"{reverseFace.Substring(0, 2)}ಠ益ಠ{reverseFace.Substring(faceLength - 2, 2)}";
if (faceLength > 5 + 4)
reverseFace = $"{reverseFace[..2]}ಠ益ಠ{reverseFace[^2..]}";
await args.Channel.SendMessageAsync("┬─┬ " + reverseFace.Sanitize()).ConfigureAwait(false);
}
catch (Exception e)

View File

@ -37,7 +37,7 @@ namespace CompatBot.EventHandlers
e.Context.Message,
e.Context.Prefix,
cmd,
e.Context.Message.Content.Substring(e.Context.Prefix.Length).Trim()
e.Context.Message.Content[(e.Context.Prefix.Length)..].Trim()
);
try { await cmd.ExecuteAsync(updatedContext).ConfigureAwait(false); } catch { }
return;
@ -55,7 +55,7 @@ namespace CompatBot.EventHandlers
if (pos < 0)
return;
var gameTitle = e.Context.Message.Content.Substring(pos).TrimEager().Trim(40);
var gameTitle = e.Context.Message.Content[pos..].TrimEager().Trim(40);
if (string.IsNullOrEmpty(gameTitle) || char.IsPunctuation(gameTitle[0]))
return;

View File

@ -95,7 +95,7 @@ namespace CompatBot.Utils
return first + last;
if (first == last)
return first.Substring(0, 1);
return first[..1];
if (last.StartsWith(first))
return $"{first} - {last}";

View File

@ -50,7 +50,7 @@ namespace CompatBot.Utils
return str;
if (str.StartsWith('"') && str.EndsWith('"'))
return str.Substring(1, str.Length - 2);
return str[1..^1];
return str;
}

View File

@ -278,7 +278,7 @@ namespace CompatBot.Utils.ResultFormatters
{
var modelNumber = intelMatch.Groups["gpu_model_number"].Value;
if (!string.IsNullOrEmpty(modelNumber) && modelNumber.StartsWith('P'))
modelNumber = modelNumber.Substring(1);
modelNumber = modelNumber[1..];
int.TryParse(modelNumber, out var modelNumberInt);
if (modelNumberInt < 500 || modelNumberInt > 1000)
{

View File

@ -296,7 +296,7 @@ namespace CompatBot.Utils.ResultFormatters
else if (items["disc_package_version"] is string discPkgVer && !discPkgVer.Equals("Unknown", StringComparison.InvariantCultureIgnoreCase))
items["game_version"] = discPkgVer;
if (items["game_version"] is string gameVer && gameVer.StartsWith("0"))
items["game_version"] = gameVer.Substring(1);
items["game_version"] = gameVer[1..];
foreach (var key in items.AllKeys)
{
@ -373,7 +373,7 @@ namespace CompatBot.Utils.ResultFormatters
return false;
var len = Math.Min(commitA.Length, commitB.Length);
return commitA.Substring(0, len) == commitB.Substring(0, len);
return commitA[..len] == commitB[..len];
}
private static string GetOpenglDriverVersion(string gpuInfo, string version)
@ -547,7 +547,7 @@ namespace CompatBot.Utils.ResultFormatters
if (release.Contains(".fc"))
{
var ver = release.Split('.').FirstOrDefault(p => p.StartsWith("fc"))?.Substring(2);
var ver = release.Split('.').FirstOrDefault(p => p.StartsWith("fc"))?[2..];
return "Fedora " + ver;
}

View File

@ -72,7 +72,7 @@ namespace CompatBot.Utils.ResultFormatters
{
var match = PsnScraper.ContentIdMatcher.Match(fname);
if (match.Success)
return fname.Substring(20);
return fname[20..];
}
catch { }
return fname;

View File

@ -106,7 +106,7 @@ namespace CompatBot.Utils.ResultFormatters
var text = new Uri(link).Segments?.Last() ?? "";
if (simpleName && text.StartsWith("rpcs3-"))
text = text.Substring(6);
text = text[6..];
if (simpleName && text.Contains('_'))
text = text.Split('_', 2)[0] + Path.GetExtension(text);

View File

@ -8,7 +8,7 @@ namespace CompatBot.Utils
{
public static readonly Dictionary<string, TimeZoneInfo> TimeZoneMap;
public static Dictionary<string, string[]> TimeZoneAcronyms = new Dictionary<string, string[]>
public static readonly Dictionary<string, string[]> TimeZoneAcronyms = new Dictionary<string, string[]>
{
["PT"] = new[] { "Pacific Standard Time" },
["PST"] = new[] { "Pacific Standard Time" },
@ -50,17 +50,15 @@ namespace CompatBot.Utils
return false;
dateTime = dateTime.ToUpperInvariant();
if (char.IsDigit(dateTime[dateTime.Length - 1]))
{
if (char.IsDigit(dateTime[^1]))
return DateTime.TryParse(dateTime, out result);
}
var cutIdx = dateTime.LastIndexOf(' ');
if (cutIdx < 0)
return false;
var tza = dateTime.Substring(cutIdx + 1);
dateTime = dateTime.Substring(0, cutIdx);
var tza = dateTime[(cutIdx+1)..];
dateTime = dateTime[..cutIdx];
if (TimeZoneMap.TryGetValue(tza, out var tzi))
{
if (!DateTime.TryParse(dateTime, out result))
@ -74,14 +72,13 @@ namespace CompatBot.Utils
}
public static DateTime Normalize(this DateTime date)
{
if (date.Kind == DateTimeKind.Utc)
return date;
if (date.Kind == DateTimeKind.Local)
return date.ToUniversalTime();
return date.AsUtc();
}
public static DateTime Normalize(this DateTime date) =>
date.Kind switch
{
DateTimeKind.Utc => date,
DateTimeKind.Local => date.ToUniversalTime(),
_ => date.AsUtc(),
};
public static List<string> GetSupportedTimeZoneAbbreviations() => TimeZoneMap.Keys.ToList();
}