【发布时间】:2020-07-31 14:06:27
【问题描述】:
我正在尝试从字符串中过滤一些文本/数据。
我的意图是最终得到两个字符串,即 t原始文本没有分隔符之间的文本(并且没有分隔符)和一个新的 字符串所有分隔符之间的字符。 问题是括号之间的数据可以包含任何内容,包括“[”、“]”和“,”。所以可能有一个单开括号 没有右括号可以在分隔符之间定义
这是一个例子: 这是一些输入文本。分隔符是 '[' 和 ']',因此应该从输入字符串中删除所有之间的内容(包括分隔符)。应保存周围括号(不包括括号)之间的数据。分隔符之间的所有字符串都应该连接成一个大字符串。
String input ="{[bra],pro,{[ckets[]]},ent[,HDR]}";
预期结果
String filteredText = "{,pro,{},ent}"; //The original text - the delimiters (surrounding brackets) - everything between the delimiters.
String dataText = "brackets[],HDR"; //The text of all in-between delimiters without the surrounding brackets
我尝试手动遍历整个字符串中的每个字符,并尝试找到起点和终点,以手动获取括号之间的数据。 像这样的:
[ = openCloseBracket +1
] = openCloseBracket -1
这样我们可以确定一个startIndex和一个endIndex。 这仅适用于所有包含右括号的开括号。 由于括号数据也可以包含括号,因此没有明确的开始和停止条件,所以这不起作用。 这就是为什么 RegEx 函数,例如 "<.>>"、"<.>?>" 或 "(\<.>\>)| (".")| ('.')|(\(.\))" 无法按预期过滤括号。
如何获取过滤后的文本和从文本中删除的字符(作为一个 charArray/字符串)(没有外部分隔符/括号)? 是否有更好、更简单的方法来手动循环整个文本?
【问题讨论】:
标签: c# string-formatting