如何将含大量前缀空格的字符串转为数组?需提取完整姓名并避免空值
解决姓名文本转数组的问题
嘿,我完全懂你的困扰——这种行首堆着大量空格、姓名本身又带空格的文本,直接按空格拆分肯定会冒出一堆空值,还把完整姓名拆得稀碎。咱们用简单几步就能搞定:
核心思路
因为每个姓名单独占一行,且只有行首有多余空格,姓名内部的空格是我们要保留的,所以重点是按行处理,而不是按空格拆分:
- 先把整个文本按换行符拆分成单行的列表;
- 给每行去掉首尾的所有空格(不管是15还是20个,一次性清干净);
- 过滤掉可能存在的空行,剩下的就是完整的姓名数组了。
具体代码示例
JavaScript版本
// 你的原始文本(行首带15-20个空格) const rawText = ` Jake Senior Stephen Abert Benny Andrnw Jacob Ben Juniour Michael Smith`; // 按换行分割每行 → 清理每行空格 → 过滤空行 const nameArray = rawText.split('\n') .map(line => line.trim()) .filter(name => name); console.log(nameArray); // 输出结果:["Jake Senior", "Stephen Abert", "Benny Andrnw", "Jacob Ben Juniour", "Michael Smith"]
Python版本
# 你的原始文本 raw_text = """ Jake Senior Stephen Abert Benny Andrnw Jacob Ben Juniour Michael Smith""" # 列表推导式一步到位:分割行 → 清理空格 → 过滤空行 name_array = [line.strip() for line in raw_text.split('\n') if line.strip()] print(name_array) # 输出结果:['Jake Senior', 'Stephen Abert', 'Benny Andrnw', 'Jacob Ben Juniour', 'Michael Smith']
更精准的正则匹配(可选)
如果你想严格匹配行首15-20个空格的情况,避免误处理其他可能的空格,可以用正则表达式直接提取所有符合条件的姓名:
const regex = /\s{15,20}(.+)/g; const nameArray = []; let matchResult; while ((matchResult = regex.exec(rawText)) !== null) { nameArray.push(matchResult[1]); } console.log(nameArray);
这样不管行首空格是15还是20个,都能精准抓取出后面的完整姓名,完美解决你的问题~
内容的提问来源于stack exchange,提问作者Ruthock
相关产品推荐
相关产品推荐

