如何在不使用split方法的前提下从右到左处理单行命令输入?
不使用split方法从右到左处理命令行参数的实现方案
核心思路
不需要把整行输入拆分为列表再反转,直接从字符串尾部开始倒序遍历,遇到空格就截取当前收集到的参数即可,全程不调用split方法。
具体实现(以Python为例)
针对形如 -r -p -s 的输入字符串,实现代码如下:
input_cmd = "-r -p -s" current_arg = "" processed_args = [] # 从字符串最后一个字符的下标开始倒序遍历 for index in range(len(input_cmd) - 1, -1, -1): current_char = input_cmd[index] if current_char == " ": # 遇到空格说明当前参数收集完成,存入结果列表 if current_arg: processed_args.append(current_arg) current_arg = "" else: # 倒序遍历字符,所以需要把新字符拼到当前参数的最前面,保证参数内容正确 current_arg = current_char + current_arg # 遍历结束后补充原字符串最左侧、没匹配到空格的第一个参数 if current_arg: processed_args.append(current_arg) # 按从右到左的顺序处理每个参数的对应功能即可 for arg in processed_args: print(f"正在处理参数:{arg}")
运行上述代码得到的processed_args结果为 ['-s', '-p', '-r'],刚好是原输入从右到左的参数顺序。
适配说明
如果参数包含带值的格式(比如-p 8080),只需要加额外判断规则即可,核心倒序遍历收集参数的逻辑不需要调整。
内容的提问来源于stack exchange,提问作者Derek Li
相关产品推荐
相关产品推荐

