diff --git a/libse/Utilities.cs b/libse/Utilities.cs index cf95bac8b..dd68a33cd 100644 --- a/libse/Utilities.cs +++ b/libse/Utilities.cs @@ -651,21 +651,37 @@ namespace Nikse.SubtitleEdit.Core public static string RemoveLineBreaks(string input) { var s = HtmlUtil.FixUpperTags(input); + + s = s.Replace(" " + Environment.NewLine + "", Environment.NewLine); + s = s.Replace("" + Environment.NewLine + " ", Environment.NewLine); + s = s.Replace("" + Environment.NewLine + "", Environment.NewLine); + + s = s.Replace(Environment.NewLine + " ", "" + Environment.NewLine); + s = s.Replace(Environment.NewLine + " ", "" + Environment.NewLine); + s = s.Replace(Environment.NewLine + " ", "" + Environment.NewLine); + s = s.Replace(Environment.NewLine + " ", "" + Environment.NewLine); + + s = s.Replace(" " + Environment.NewLine + "", "" + Environment.NewLine); + s = s.Replace(" " + Environment.NewLine + "", "" + Environment.NewLine); + s = s.Replace(" " + Environment.NewLine + "", "" + Environment.NewLine); + s = s.Replace(" " + Environment.NewLine + "", "" + Environment.NewLine); + s = s.Replace(Environment.NewLine + "", "" + Environment.NewLine); s = s.Replace(Environment.NewLine + "", "" + Environment.NewLine); s = s.Replace(Environment.NewLine + "", "" + Environment.NewLine); s = s.Replace(Environment.NewLine + "", "" + Environment.NewLine); - s = s.Replace(" " + Environment.NewLine + "", " "); - s = s.Replace("" + Environment.NewLine + " ", " "); - s = s.Replace("" + Environment.NewLine + "", " "); - s = s.Replace(" " + Environment.NewLine + " ", " "); - s = s.Replace(Environment.NewLine + " ", " "); - s = s.Replace(" " + Environment.NewLine + " ", " "); + + while (s.Contains(" " + Environment.NewLine)) + { + s = s.Replace(" " + Environment.NewLine, Environment.NewLine); + } + + while (s.Contains(Environment.NewLine + " ")) + { + s = s.Replace(Environment.NewLine + " ", Environment.NewLine); + } + s = s.Replace(Environment.NewLine, " "); - s = s.Replace(" ", " "); - s = s.Replace(" ", " "); - s = s.Replace(" ", " "); - s = s.Replace(" ", " "); return s.Trim(); } diff --git a/src/Test/Logic/UtilitiesTest.cs b/src/Test/Logic/UtilitiesTest.cs index 5ca383420..e611ef669 100644 --- a/src/Test/Logic/UtilitiesTest.cs +++ b/src/Test/Logic/UtilitiesTest.cs @@ -228,7 +228,7 @@ namespace Test.Logic var old = Configuration.Settings.General.MaxNumberOfLines; Configuration.Settings.General.MaxNumberOfLines = 3; Configuration.Settings.Tools.AutoBreakUsePixelWidth = false; - const string s1 = "Follow him. Day and night wherever he goes and goes and goes and goes and goes again!"; + const string s1 = "Follow him. Day and night wherever he goes and goes and goes and goes and goes again!"; string s2 = Utilities.AutoBreakLine(s1); Configuration.Settings.General.MaxNumberOfLines = old; Assert.AreEqual("Follow him. Day and night wherever he goes" + Environment.NewLine + "and goes and goes and goes and goes again!", s2); @@ -680,35 +680,35 @@ namespace Test.Logic public void RemoveLineBreaks1() { string result = Utilities.RemoveLineBreaks("Hey" + Environment.NewLine + "you!"); - Assert.AreEqual(result, "Hey you!"); + Assert.AreEqual("Hey you!", result); } [TestMethod] public void RemoveLineBreaks2() { string result = Utilities.RemoveLineBreaks("Foobar " + Environment.NewLine + " foobar."); - Assert.AreEqual(result, "Foobar foobar."); + Assert.AreEqual("Foobar foobar.", result); } [TestMethod] public void RemoveLineBreaks3() { string result = Utilities.RemoveLineBreaks("Foobar " + Environment.NewLine + "foobar."); - Assert.AreEqual(result, "Foobar foobar."); + Assert.AreEqual("Foobar foobar.", result); } [TestMethod] public void RemoveLineBreaks4() { string result = Utilities.RemoveLineBreaks("Hey" + Environment.NewLine + "you!"); - Assert.AreEqual(result, "Hey you!"); + Assert.AreEqual("Hey you!", result); } [TestMethod] public void RemoveLineBreaks5() { string result = Utilities.RemoveLineBreaks("Foobar" + Environment.NewLine + ""); - Assert.AreEqual(result, "Foobar"); + Assert.AreEqual( "Foobar", result); } [TestMethod]