gpt4 book ai didi

java - "Nice"获取开始标记和匹配结束标记(括号等)之间的子字符串的方法

转载 作者:行者123 更新时间:2023-12-02 09:36:55 26 4
gpt4 key购买 nike

我经常遇到从位于开始标记(例如“(”)和结束标记(例如“)”)之间的字符串中提取子字符串的任务,这样“开始标记的“level”与结束标记的“level”匹配

例如,在以下字符串中,

((a + (b * c) + d) + e)

当给定索引 1(指向字符串中的第二个开始标记“(”)时,我会对子字符串感兴趣

(a + (b * c) + d)

在第一个结束标记之前我对此部分不感兴趣:

(a + (b * c)

除了单字符标签之外,较长的字符串(例如“开始”、“结束”)也应该有效。解决这个问题并不难,但我总是发现我在循环中运行字符串非常难看,可能效率低下且容易出错。

有什么好的方法可以做到这一点吗?

(也许有一些正则表达式 hack?但由于需要计数,它们不会直接工作。)

最佳答案

我必须做类似的事情,但是使用 <>相反。

我认为最好的方法是迭代字符串,并在进行过程中保留一堆“打开”和“关闭”标签。当您到达开始标记和结束标记数量相同的点时,您就知道找到了一个子字符串。此方法需要递归/循环,因为一旦解析了最外面的情况,您仍然有内部情况。

或者,您可以执行相同的操作,但是一旦您点击关闭标记,就解析最后一个打开标记和关闭标记的子字符串。由于字符串是不可变的,因此此方法将更难跟踪。

如果您想要任何代码示例,我可以提供它们,但是字符串解析学习起来非常有趣

关于java - "Nice"获取开始标记和匹配结束标记(括号等)之间的子字符串的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657332/

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