如何获取字符串中指定重复出现的目标字符的索引位置
获取指定序号括号索引的实现方案
核心思路是逐字符遍历匹配括号,或者用正则批量提取所有括号的位置,两种方式都不需要预先知道括号前后的字符长度,支持获取任意序号的括号索引。
方法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
相关产品推荐
相关产品推荐

