You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取字符串中指定重复出现的目标字符的索引位置

获取指定序号括号索引的实现方案

核心思路是逐字符遍历匹配括号,或者用正则批量提取所有括号的位置,两种方式都不需要预先知道括号前后的字符长度,支持获取任意序号的括号索引。

方法1:遍历实现(兼容性最高)

Python 示例

如果需要统计所有左右括号的第n个位置:

def get_nth_bracket_index(s: str, n: int) -> int:
    count = 0
    for idx, char in enumerate(s):
        if char in ("(", ")"):
            count += 1
            if count == n:
                return idx
    return -1 # 括号数量不足时返回-1

# 测试你的用例
test_str = "test (string) (10)"
print(get_nth_bracket_index(test_str, 3)) # 输出14,即你要的第二个左括号的索引

如果只需要统计左括号的第n个位置,将判断条件改为if char == "("即可。

JavaScript 示例

function getNthBracketIndex(str, n) {
    let count = 0;
    for (let i = 0; i < str.length; i++) {
        if (str[i] === "(" || str[i] === ")") {
            count++;
            if (count === n) return i;
        }
    }
    return -1;
}

// 测试用例
const testStr = "test (string) (10)";
console.log(getNthBracketIndex(testStr, 3)); // 输出14

方法2:正则批量提取(代码更简洁)

直接匹配所有目标括号的位置存入列表,需要时直接按下标取值即可,以Python为例:

import re
test_str = "test (string) (10)"
# 提取所有括号的起始索引
bracket_positions = [match.start() for match in re.finditer(r"[()]", test_str)]
# 取第3个括号,列表从0开始计数所以取下标2
print(bracket_positions[2] if len(bracket_positions) >=3 else -1) # 输出14

如果只匹配左括号,把正则规则改为r"\("即可。

内容的提问来源于stack exchange,提问作者Berg_Durden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:36:05