gpt4 book ai didi

c# - 如何用另一个字符串拆分字符串

转载 作者:太空宇宙 更新时间:2023-11-03 22:57:18 25 4
gpt4 key购买 nike

我有这个字符串(它来自 EDI 数据):

ISA*ESA?ISA*ESA?

*表示可以是任意字符,任意长度。

? 表示任意单个字符。

只有ISAESA保证不会改变。

我需要将其分成两个字符串,如下所示:"ISA~this is date~ESA|"

"ISA~this is more data~ESA|"

我如何在 C# 中执行此操作?

我不能使用 string.split,因为它实际上没有分隔符。

最佳答案

您可以使用 Regex.Split 来完成此操作

string splitStr = "|", inputStr = "ISA~this is date~ESA|ISA~this is more data~ESA|";

var regex = new Regex($@"(?<=ESA){Regex.Escape(splitStr)}(?=ISA)", RegexOptions.Compiled);
var items = regex.Split(inputStr);

foreach (var item in items) {
Console.WriteLine(item);
}

输出:

ISA~this is date~ESA
ISA~this is more data~ESA|

请注意,如果您在 ISAESA 之间的字符串与我们正在寻找的模式相同,那么您将不得不找到一些聪明的方法来解决它。

稍微解释一下正则表达式:

(?<=ESA)   Look-behind assertion. This portion is not captured but still matched
(?=ISA) Look-ahead assertion. This portion is not captured but still matched

使用这些环视断言,您可以找到正确的 | 字符进行拆分

关于c# - 如何用另一个字符串拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44788534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com