没有限制的拆分,拆分整个字符串,但是如果你设置了限制,它会从左边拆分到那个限制,我怎么能从右边做同样的事情呢?
"a.b.c".split("[.]", 2); // returns ["a", "b.c"]
我想
"a.b.c".splitRight("[.]", 2); // to return ["a.b", "c"]
编辑:我想要一个通用的解决方案,就像拆分,但反过来,所以我添加了一个更复杂的例子
我想
"a(->)b(->)c(->)d".splitRight("\\(->\\)", 3); // to return ["a(->)b", "c", "d"]
4条答案
按热度按时间6tqwzwtp1#
你可以使用look-ahead match:
这里你说“我只想用那个后面没有其他点的点来分割”。
如果你想用最后N个点来分割,你可以用这种(更丑陋的方式)来概括这个解决方案:
将
3
替换为N-2
。但是我会写一个简短的静态方法:
7d7tgy0s2#
我会尝试这样的东西:
split的正则表达式被另一个正则表达式 Package ,因此对于
\\.
,您将得到:\\.(?!.*\\..*$)
,匹配并在最后一次出现分隔符时拆分。使用此正则表达式对字符串进行多次拆分,结果数组的第二个元素添加到List中,下一次拆分在结果数组的第一个元素上完成。上面的方法对你的示例字符串的效果和预期的一样。
6fe3ivhb3#
尽管你说反转会花很长时间,这里有一个小程序,它尊重字符串并按限制拆分它;
jdzmm42g4#
性能不是很好,但可读性比上面的一些例子好: