C语言中如何移除字符串前10个字符以提取CPU型号名称
字符串处理方案
你可以根据实际需求选对应的实现方式,两类操作都不会破坏CPU名称内部的空白字符:
固定移除前10个字符
不同开发/脚本环境下直接用字符串切片即可,这类操作是按位置截断,完全不会修改剩余部分的内容,内部空格会完整保留:
- Bash/Shell 环境:
原生切片语法(下标从0开始计数,参数10代表跳过前10个字符):
也可以用cut命令实现(字符计数从1开始,从第11位截取到末尾):s="model name : Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz" echo "${s:10}"echo "model name : Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz" | cut -c11- - Python 环境:
同样用切片语法即可:s = "model name : Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz" print(s[10:])
仅移除开头空白、保留内部空白
如果你的最终目标是拿到干净的CPU名称,不推荐硬编码截断前10个字符——不同设备输出的model name后缀的冒号、空格数量可能有差异,硬编码位置容易出问题。更稳妥的方式是先按第一个冒号拆分出后半段,再仅移除后半段开头的空白即可,全程不会触碰CPU名称内部的空格:
- Bash/Shell 环境:
s="model name : Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz" # 先截掉第一个冒号及之前的内容,再自动去除开头的空白 cpu_name=$(echo "${s#*:}" | xargs) echo "$cpu_name" - Python 环境:
用lstrip()方法即可,这个方法只会删除字符串开头的所有空白字符(空格、制表符等),完全不影响字符串中间、尾部的内容:s = "model name : Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz" # 按第一个冒号拆分为两部分,取后半段后仅去除开头空白 cpu_name = s.split(":", maxsplit=1)[1].lstrip() print(cpu_name)
注意:不要使用全局替换空白的写法(比如把字符串内所有空格都替换为空),这类操作才会破坏CPU名称内部的空格格式,上面提到的截断、按分隔符拆分、
lstrip()去前导空白的写法都不存在这个问题。
内容的提问来源于stack exchange,提问作者user19435240
相关产品推荐
相关产品推荐

