如何将(x;y;z)格式的字符串转换为三个独立整数?
实现分号分隔整数的解析与验证(基于字符串操作)
核心思路
完全基于字符串操作实现,步骤清晰直接:
- 用分号分割输入字符串,先校验分割后的元素数量是否为3
- 逐个验证每个分割出的片段是否为合法整数(支持正负)
- 验证通过后转换为整数类型,输出指定格式结果
合法性校验要点
- 输入分割后必须恰好得到3个非空片段
- 每个片段需符合整数格式:正整数直接是纯数字,负整数以负号开头且后面为纯数字
- 排除空片段(如
;;、12;;34这类无效输入)
代码实现(Python)
def parse_three_integers(input_str): # 按分号分割输入字符串 segments = input_str.split(';') # 校验片段数量是否为3 if len(segments) != 3: return "输入格式错误:必须是3个分号分隔的整数" result = [] for pos, seg in enumerate(segments, 1): # 去除片段前后空白,兼容用户可能输入的空格 clean_seg = seg.strip() if not clean_seg: return f"输入格式错误:第{pos}个数字不能为空" # 验证是否为合法整数 if clean_seg.startswith('-'): if not clean_seg[1:].isdigit(): return f"输入格式错误:第{pos}个数字不是有效整数" else: if not clean_seg.isdigit(): return f"输入格式错误:第{pos}个数字不是有效整数" # 转换为整数并存储 result.append(int(clean_seg)) # 返回格式化结果 return f"Number1 = {result[0]}, Number2 = {result[1]}, Number3 = {result[2]}" # 测试示例 print(parse_three_integers("22;33;55")) # 输出:Number1 = 22, Number2 = 33, Number3 = 55 print(parse_three_integers("-10;20;-30")) # 输出:Number1 = -10, Number2 = 20, Number3 = -30 print(parse_three_integers(";;")) # 输出:输入格式错误:第1个数字不能为空 print(parse_three_integers("12;abc;34")) # 输出:输入格式错误:第2个数字不是有效整数
细节说明
- 用
split(';')做核心字符串分割,是最贴合需求的字符串操作方式 - 加入
strip()处理用户输入的冗余空格,提升场景容错性 - 分情况验证正负整数,覆盖所有合法整数的格式
- 逐段校验并返回具体错误信息,方便用户快速定位问题
内容的提问来源于stack exchange,提问作者Kurbamit
相关产品推荐
相关产品推荐

