diff --git a/src/modules/Hosts/Hosts.Tests/EntryTest.cs b/src/modules/Hosts/Hosts.Tests/EntryTest.cs index c316ecda53..501294725a 100644 --- a/src/modules/Hosts/Hosts.Tests/EntryTest.cs +++ b/src/modules/Hosts/Hosts.Tests/EntryTest.cs @@ -74,6 +74,7 @@ namespace Hosts.Tests [DataRow("\t\thost\t\t10.1.1.1")] [DataRow(" host 10.1.1.1")] [DataRow("host 10.1.1.1")] + [DataRow("# comment 10.1.1.1 host # comment")] public void Not_Valid_Entry(string line) { var entry = new Entry(0, line); diff --git a/src/modules/Hosts/Hosts/Models/Entry.cs b/src/modules/Hosts/Hosts/Models/Entry.cs index 55b79ca8ac..dfce3c3cb1 100644 --- a/src/modules/Hosts/Hosts/Models/Entry.cs +++ b/src/modules/Hosts/Hosts/Models/Entry.cs @@ -12,6 +12,8 @@ namespace Hosts.Models { public partial class Entry : ObservableObject { + private static readonly char[] _spaceCharacters = new char[] { ' ', '\t' }; + [ObservableProperty] [NotifyPropertyChangedFor(nameof(Valid))] private string _address; @@ -99,7 +101,7 @@ namespace Hosts.Models var addressHost = lineSplit[0]; - var addressHostSplit = addressHost.Split(' ', '\t'); + var addressHostSplit = addressHost.Split(_spaceCharacters, StringSplitOptions.RemoveEmptyEntries); var hostsBuilder = new StringBuilder(); var commentBuilder = new StringBuilder(); @@ -107,17 +109,9 @@ namespace Hosts.Models { var element = addressHostSplit[i].Trim(); - if (string.IsNullOrWhiteSpace(element)) + if (i == 0 && IPAddress.TryParse(element, out var _) && (element.Contains(':') || element.Contains('.'))) { - continue; - } - - if (Address == null) - { - if (IPAddress.TryParse(element, out var _) && (element.Contains(':') || element.Contains('.'))) - { - Address = element; - } + Address = element; } else {