是否有一个正则表达式可以将String.split()字符串分解成连续的字符 - 即分割下一个字符与前一个字符不同的地方?
这是测试用例:
String regex = "your answer here";
String[] parts = "aaabbcddeee".split(regex);
System.out.println(Arrays.toString(parts));
Run Code Online (Sandbox Code Playgroud)
预期产量:
[aaa, bb, c, dd, eee]
Run Code Online (Sandbox Code Playgroud)
虽然测试用例只有字母作为输入,但这只是为了清晰起见; 输入字符可以是任何字符.
请不要提供涉及循环或其他技术的"解决方法".
问题是为代码找到正确的正则表达式,如上所示 - 即只使用split()而不使用其他方法调用.找到能够"完成工作"的代码并不是问题.
我有一些String只由数字组成,我想在角色改变时拆分它.
例如:
"11101100112021120" 去: {"111", "11", "11", "2", "2", "11", "2"}"222222222" 去 {"222222222"}"222222122" 去 {"222222", "1", "22"}"000000000" 去 {}"0000100000" 去 {"1"}"11121222212112133321" 去 {"111", "2", "1", "2222", "1", "2", "11", "2", "1", "333", "2", "1"}我想要一个很好的方法来做到这一点.
我知道两种方法:强制执行,或逐节添加.或者,我可以通过删除所有0并替换为0,然后在字符更改时添加0,然后在0上进行拆分,但这两种方式看起来都很愚蠢.如果有人对更好/更漂亮的方法有任何想法,正则表达式或逻辑,它会很好.
这些天我一直在试图弄清楚如何使用Java 8流API执行减少并同时维护索引.这是一个例子:
我有以下字符串:
String charSequence = "kjsfjsfajdsfjsaaaaaasssddfddddbbbdddaaa";
Run Code Online (Sandbox Code Playgroud)
我想通过Stream操作返回三元组 (I, N, C)
哪里:
C 是一个角色 N 是一些事件 - 应该是最大的I 是第一次出现的字符串的索引(如果有多个字符串,则为第一个)例子:
"ddaaaacccjcccccjjj" 回报 (10, 5, c)"ddaaacccaaa"的第一次出现"aaa"是2这样的结果将是:
(2, 3, a)一般来说,如果我可以返回所有具有长度为3的子串的字符,那将是很好的,这样结果就是两个三元组(I, N, C) C.但这是可选的.如果我得到第一个三重权利,我可以自己前进.
更新:
我不是在寻找替代解决方案.我可以用另一个API很好地实现它.我试图理解为什么维护索引是困难的,或者为什么不能这样做,如果是这样的话.反对的好论据很好.