Bladeren bron

qdr.fnd.core:

- Add extension StringExt.RemoveDecorator to remove string decorator
- Update Tests for StringExt
Dalibor Votruba 1 jaar geleden
bovenliggende
commit
0c5fbc7fc7

+ 45 - 0
qdr.fnd.core.test/Value/StringExtensionTest.cs

@@ -96,5 +96,50 @@ namespace qdr.fnd.core.test.Value
             Assert.That(result[1], Is.EqualTo("b"));
             Assert.That(result[2], Is.EqualTo(""));
         }
+
+        [Test(TestOf = typeof(StringExt))]
+        public void RemoveDecoratorOk()
+        {
+            var baseInput = "hohoh";
+            var input = "\"" + baseInput + "\"";
+            var result = input.RemoveDecorator("\"");
+            Assert.That(result, Is.Not.Null);
+            Assert.That(result, Is.EqualTo(baseInput));
+
+            input = "aaa" + baseInput + "aaa";
+            result = input.RemoveDecorator("aaa");
+            Assert.That(result, Is.Not.Null);
+            Assert.That(result, Is.EqualTo(baseInput));
+
+            input = "aaa" + baseInput + "bbb";
+            result = input.RemoveDecorator("aaa", "bbb");
+            Assert.That(result, Is.Not.Null);
+            Assert.That(result, Is.EqualTo(baseInput));
+
+            input = "aaa" + baseInput + "";
+            result = input.RemoveDecorator("aaa", "");
+            Assert.That(result, Is.Not.Null);
+            Assert.That(result, Is.EqualTo(baseInput));
+        }
+
+        [Test(TestOf = typeof(StringExt))]
+        public void RemoveDecoratorFail()
+        {
+            var baseInput = "hohoh";
+            var input = "\"" + baseInput;
+            var result = input.RemoveDecorator("\"");
+            Assert.That(result, Is.Not.Null);
+            Assert.That(result, Is.EqualTo(input));
+
+            input = "aaa" + baseInput + "";
+            result = input.RemoveDecorator("aaa");
+            Assert.That(result, Is.Not.Null);
+            Assert.That(result, Is.EqualTo(input));
+
+            input = string.Empty;
+            result = input.RemoveDecorator("aaa", "");
+            Assert.That(result, Is.Not.Null);
+            Assert.That(result, Is.EqualTo(input));
+        }
     }
 }

+ 11 - 0
qdr.fnd.core/Value/Extensions/StringExt.cs

@@ -79,6 +79,17 @@ namespace Quadarax.Foundation.Core.Value.Extensions
             return value.Length == 0 ? string.Empty : value.Substring(1, value.Length - 1);
         }
 
+        public static string RemoveDecorator(this string value, string decoratorLeft, string? decoratorRight = null)
+        {
+            if (string.IsNullOrEmpty(value) || string.IsNullOrEmpty(decoratorLeft))
+                return value;
+            if (decoratorRight == null)
+                decoratorRight = decoratorLeft;
+            if (value.StartsWith(decoratorLeft, StringComparison.InvariantCulture) && value.EndsWith(decoratorRight, StringComparison.InvariantCulture))
+                return value.Substring(decoratorLeft.Length, value.Length - decoratorLeft.Length - decoratorRight.Length);
+            return value;
+        }
+
         public static int MaxLineChars(this string value)
         {
             var aParts = value.Split("/n");

+ 1 - 0
qdr.fnd.core/qdr.fnd.core.csproj

@@ -20,6 +20,7 @@
     <Version>0.0.10.0-alpha</Version>
     <PackageReleaseNotes>Date:25.06.2025
 		- Add extension StringExt.SplitQuoted to split string with quoted values
+		- Add extension StringExt.RemoveDecorator to remove string decorator
     </PackageReleaseNotes>
     <PackageReadmeFile>releasenotes.md</PackageReadmeFile>
     <Nullable>enable</Nullable>

+ 1 - 0
qdr.fnd.core/releasenotes.md

@@ -3,6 +3,7 @@ Ordered by version descending
 ## 0.0.10.0
 Date:__25.06.2025__
 - Add extension StringExt.SplitQuoted to split string with quoted values
+- Add extension StringExt.RemoveDecorator to remove string decorator
 ---
 
 ## 0.0.9.0