From 85f55bfbea229dd829bd581368b28087e5090f57 Mon Sep 17 00:00:00 2001 From: p1va Date: Thu, 5 Jun 2025 11:23:47 +0200 Subject: [PATCH] Fix SubstringBetween length calculation --- src/DotnetDocument/Extensions/StringExtensions.cs | 3 ++- test/DotnetDocument.Tests/StringExtensionsTests.cs | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/DotnetDocument/Extensions/StringExtensions.cs b/src/DotnetDocument/Extensions/StringExtensions.cs index ea5bc58..73df7c8 100644 --- a/src/DotnetDocument/Extensions/StringExtensions.cs +++ b/src/DotnetDocument/Extensions/StringExtensions.cs @@ -27,7 +27,8 @@ public static string SubstringBetween(this string text, string start, string end var endIndex = text.IndexOf(end, StringComparison.Ordinal); if (text.Contains(start) && text.Contains(end) && startIndex < endIndex) - return text.Substring(startIndex + start.Length, endIndex - end.Length - startIndex); + return text.Substring(startIndex + start.Length, + endIndex - startIndex - start.Length); return string.Empty; } diff --git a/test/DotnetDocument.Tests/StringExtensionsTests.cs b/test/DotnetDocument.Tests/StringExtensionsTests.cs index 575f820..c504251 100644 --- a/test/DotnetDocument.Tests/StringExtensionsTests.cs +++ b/test/DotnetDocument.Tests/StringExtensionsTests.cs @@ -27,5 +27,17 @@ public void ShouldOnlySubstringDoubleTriangleBrackets(string text, string expect substring.ShouldBe(expected); } + [Fact] + public void ShouldSubstringWithDifferentTokenLengths() + { + const string text = "This is in text."; + + // Act + var substring = text.SubstringBetween(""); + + // Assert + substring.ShouldBe("some comment"); + } + } }