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

如何从字符串任意位置提取int类型变量名?替代startswith方案

问题原因与解决方案

问题根源

是,问题完全由startswith函数导致。startswith仅检查字符串开头是否匹配"int",完全忽略字符串中间出现的"int",自然无法提取这类场景下的变量名。

替代方案

方案1:使用字符串find循环查找

通过find方法遍历字符串中所有"int"的出现位置,再提取后续到list_end的内容:

list_variable = []
# 替换为你的实际结束标识,比如空格、分号、括号等
list_end = " "
# 替换为你的输入字符串列表
input_strings = [
    "int zt", 
    "void func(int w)", 
    "int nu; return 0;",
    "int i, int i2",
    "getScoreOrder(int getScoreOrder)",
    "getInteger(int getInteger)",
    "int i int t",
    "int z int g",
    "int z getType(int getType)",
    "int y",
    "int i int k"
]

for s in input_strings:
    # 查找第一个"int"的位置
    int_pos = s.find("int")
    while int_pos != -1:
        # 计算变量名的起始位置(跳过"int")
        var_start = int_pos + len("int")
        # 从变量起始位置开始找结束标识
        end_pos = s.find(list_end, var_start)
        # 如果找到结束标识,提取变量名(去除前后空白)
        if end_pos != -1:
            var_name = s[var_start:end_pos].strip()
            if var_name:
                list_variable.append(var_name)
        # 继续查找下一个"int"的位置
        int_pos = s.find("int", int_pos + 1)

print(list_variable)

方案2:使用正则表达式(更灵活)

正则表达式可以更精准匹配"int"后的变量名,尤其适合复杂格式的字符串:

import re

list_variable = []
# 定义结束标识的正则匹配规则,比如空格、分号、逗号、括号等
end_pattern = r'[\s;(),]'
# 构建匹配规则:匹配int后任意空白,再捕获变量名,直到遇到结束标识
match_pattern = re.compile(r'int\s*(\w+)(?=' + end_pattern + ')')

input_strings = [
    "int zt", 
    "void func(int w)", 
    "int nu; return 0;",
    "int i, int i2",
    "getScoreOrder(int getScoreOrder)",
    "getInteger(int getInteger)",
    "int i int t",
    "int z int g",
    "int z getType(int getType)",
    "int y",
    "int i int k"
]

for s in input_strings:
    # 提取所有匹配的变量名
    vars_found = match_pattern.findall(s)
    list_variable.extend(vars_found)

print(list_variable)

注意事项

  • 需根据实际的list_end标识调整代码:如果结束标识是特定字符串(比如";"),直接替换list_end或正则中的end_pattern即可。
  • 若变量名包含特殊字符(如下划线以外的符号),需调整正则的\w部分,比如改为[a-zA-Z0-9_]+或更符合需求的规则。

内容的提问来源于stack exchange,提问作者ya xi er

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:35:20