受此StackOverflow问题的启发。
输入:
我们将接受三个输入:
D
要分割的分隔符- 一个
I
介于两个字符之间的字符,我们将忽略分隔符(我知道,这听起来有些含糊,但我将在下面进行解释) - 一串
S
输出:
包含拆分后的子字符串的列表/数组。
例:
Input:
D = ','
I = '"'
S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"'
Output:
['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,']
为什么?有关逗号分割通常也分裂98,00
,12,000,000
并,-,
在二/三段。但是由于它们在I
输入字符中,因此我们忽略此处的拆分。
挑战规则:
- 您可以假设
I
输入字符串中总是有偶数个字符。 - 您可以假定该字符
I
将始终有一个D
下一个字符(除非它是输入的第一个或最后一个字符),但仍然可以正确分割。所以你不会有类似之类的D = ','; I = '"'; S = 'a,b"c,d"e,f'
东西D=','; I='"'; S='a",b,"c'
。 - 输入字符串
S
可以不包含D
或I
。如果它不包含D
,我们将输出一个带有整个输入字符串的列表作为唯一项。 - 输出列表中不包含的字符
I
了,即使它不包含D
(你可以在看"Abc "
成为'Abc '
在上面的例子)。 - 其中的子字符串可能
I
仅包含D
。例如:D = ','; I = '"'; S = 'a,",",b,"c","d,e,,",f'
将导致['a', ',', 'b', 'c', 'd,e,,', 'f']
。 - 您可以假设它
D
永远不会在的开始或结尾S
,因此您不必处理尾随/前导的空项目。 - 当一个输入有两个相邻的时
D
,我们将有一个空项目。即D = ','; I = '"'; S = 'a,"b,c",d,,e,"",f'
会导致['a', 'b,c', 'd', '', 'e', '', 'f']
。 - 您可以假设输入和输出仅包含该范围内的可打印ASCII
[32, 126]
(因此不包括制表符和换行符)。 - 您还可以输出所有以换行符分隔的项目,而不是返回/输出列表/数组(特别是对于那些没有列表/数组的语言;例如Retina)。
- 如果列表保存字节,则允许以相反的顺序输出列表。但是,您不能按排序或“随机”顺序输出它。因此
D = ','; I = 'n'; S = 'a,2,b,3,c'
可以作为[a,2,b,3,c]
或输出[c,3,b,2,a]
,但不能作为[2,3,a,b,c,]
或输出[a,3,b,c,2]
。
一般规则:
- 这是代码高尔夫球,因此最短答案以字节为单位。
不要让代码高尔夫球语言阻止您使用非代码高尔夫球语言发布答案。尝试针对“任何”编程语言提出尽可能简短的答案。 - 标准规则适用于您的答案,因此允许您使用STDIN / STDOUT,具有正确参数的函数/方法和返回类型的完整程序。你的来电。
- 默认漏洞是禁止的。
- 如果可能的话,请添加一个带有测试代码的链接(即TIO)。
- 另外,强烈建议为您的答案添加说明。
测试用例:
Input:
D = ','; I = '"'; S = 'a,"b,c",d,,e,"",f'
Output:
['a', 'b,c', 'd', '', 'e', '', 'f']
Input:
D = ','; I = '"'; S = '11020199,"Abc ",aduz,,444,bieb,dc,2 ,2222.00,whatever 5dc,222.22,22.00,"98,00","12,000,000",21-09-2018, 06:00,",-,"'
Output:
['11020199', 'Abc ', 'aduz', '', '444', 'bieb', 'dc', '2 ', '2222.00', 'whatever 5dc', '222.22', '22.00', '98,00', '12,000,000', '21-09-2018', ' 06:00', ',-,']
Input:
D = ' '; I = ','; S = 'this is a test , to see if you understand it, or not , hmmm, I think I have too many commas , or not , perhaps..'
Output:
['this', 'is', 'a', 'test', ' to see if you understand it', 'or', 'not', ' hmmm', 'I', 'think', 'I', 'have', 'too', 'many', 'commas', ' or not ', 'perhaps..']
Input:
D = 'x'; I = 'y'; S = 'contains no lowercase X nor Y'
Output:
['contains no lowercase X nor Y']
Input:
D = '1'; I = '3'; S = '3589841973169139975105820974944592078316406286208948254211370679314'
Output: ['58984197', '69', '9975105820974944592078', '64062862089482542', '', '70679', '4']
Input:
D = ' '; I = 'S'; S = 'regular split on spaces'
Output:
['regular', 'split', 'on', 'spaces']
D = ','; I = '"'; S = ',"a,b",c,,d,""'
我刚刚注意到,几乎所有答案都失败了。我将稍微修改一下挑战,以便在开始或结束时都不会有空的物品。根据过去在Java和05AB1E方面的经验,我知道当默认情况下该语言无法正确执行拆分时,如何手动修复拆分后令人沮丧的空项目。仍应支持这样的测试用例:D = ','; I = '"'; S = 'a,"b,c",d,,e
→之间['a', 'b,c', 'd', '', 'e']
有一个空白项。
'1,"2,3"' -> ['2,3','1']
[a,b,c]
和[c,b,a]
被允许输出,但[a,c,b]
还是[b,a,c]
不适合的例子。
D=','; I='"'; S='a",b,"c'
或什至是有效输入的结果应该是什么?
"", "'ll remove all ", ""
)