如何在C#中读取空格或换行分隔的控制台输入?
统一处理空格/换行分隔的输入转数组
嘿,这个问题其实很好解决!你不用分别针对空格和换行写两套逻辑——因为不管是空格还是换行,本质都是空白分隔符,我们可以用一个通用的方法把它们全部处理掉。
核心思路
不管输入是用空格还是换行(甚至混合两种)分隔,我们只需要匹配所有的空白字符,然后以此为依据拆分字符串,最后过滤掉可能出现的空字符串(比如输入开头/结尾的空白,或者连续多个分隔符)就能得到干净的数组了。
代码示例(不同语言)
JavaScript
// 假设input是你的输入字符串 const input = "1\n2 3\n4 5"; // 混合换行和空格的例子 const resultArray = input.split(/\s+/).filter(item => item.trim() !== ''); console.log(resultArray); // 输出: ["1", "2", "3", "4", "5"]
/\s+/是正则表达式,匹配一个或多个任意空白字符(包括空格、换行、制表符等)filter用来移除拆分后可能出现的空字符串(比如输入开头有换行的情况)
Python
Python的split()方法默认就会按任意空白字符拆分,而且自动忽略开头结尾的空白,非常省心:
input_str = "1 2\n3\n4 5" result_array = input_str.split() print(result_array) # 输出: ['1', '2', '3', '4', '5']
如果你只想匹配空格和换行(排除制表符)
如果你的场景里不需要处理制表符,只针对空格和换行,可以把正则改成/[\n ]+/(JS),或者用正则拆分后过滤空字符串(Python):
// JS 只处理空格和换行 const resultArray = input.split(/[\n ]+/).filter(item => item.trim() !== '');
这样不管你的输入是纯空格分隔、纯换行分隔,甚至是两者混合的情况,都能得到你想要的数组啦!
内容的提问来源于stack exchange,提问作者Prashant Jain
相关产品推荐
相关产品推荐

