在 C# 中拆分字符串时保留分隔符
通常,您需要使用特定分隔符分割字符串,但您也希望将这些分隔符保留在结果数组中。 本文演示了一种在 C# 中使用正则表达式的可靠方法。
解决方案:正则表达式
C# 的 Regex.Split
方法与巧妙设计的正则表达式相结合,提供了解决方案。关键是使用积极的后向断言。 正向回顾可确保当前位置之前存在模式 ,而 则不会在匹配本身中包含该模式。
正则表达式模式:
此模式查找分隔符(本例中为逗号、句点和分号),同时确保它们保留在输出中:
<code class="language-csharp">(?<=(?:[,.;]))</code>
(?<=...)
:这是一个积极的回顾断言。(?:[,.;])
:这是一个与逗号、句点或分号匹配的非捕获组。代码示例:
我们用代码来说明:
<code class="language-csharp">using System.Text.RegularExpressions; // ... other code ... string originalString = "This,is,a,comma,separated,string."; string[] parts = Regex.Split(originalString, @"(?<=(?:[,.;]))"); // parts array will contain: // ["This",",","is",",","a",",","comma",",","separated",",","string","."] </code>
正则表达式在 紧跟在 每个分隔符之后的点处分割字符串。 由于分隔符本身不包含在匹配中,因此它会保留在结果数组中。
输出:
输出表明原始字符串已被拆分,并且每个分隔符都作为单独的元素包含在结果数组中。 正向lookbehind确保分隔符是分割的一部分,而不会被吸收到字符串段中。
以上是如何在 C# 中拆分字符串同时保留分隔符?的详细内容。更多信息请关注PHP中文网其他相关文章!