【发布时间】:2014-07-01 05:07:37
【问题描述】:
假设给我这个字符串-
String A_Old[]="010.011.100.000.111";
在每次出现 "000" 时,我都希望 断开字符串并将末端包裹在字符串的前面。结果应该是这样的-
String A_New[]="111.010.011.100";
任何有关如何解决此问题的帮助将不胜感激。 另外,“000”多次出现时该怎么办?
String A_Old[]="010.011.100.000.111.001.011.000.101.110";
应该转换为:
String A_New[]="101.110.111.001.011.010.011.100";
java 或 c++ 中的代码被理解和欣赏。
编辑
这是我认为可行的-
String b[]=A_Old.split(".000.",2); //should split the string in 2 parts.
A_New=b[1].concat(b[0]); // concatenation with a loss of a period
我被告知要避免丢失期间以及不使用虚拟变量。两者都在这里失败。关于如何解决这个问题的任何想法?
【问题讨论】:
-
我不知道如何解决这个问题。我被告知不要使用虚拟变量。此外,句号给我带来了很多麻烦。
-
对于 Java(低于 8),您将需要使用
String的split方法、Arrays的asList方法、reverse的某种组合Collections的方法,Collection的toArray方法和 Apache commonsStringUtils的join方法,按此顺序。我建议分别研究每一个的 Javadocs。 -
已接受的答案不提供递归解决方案,甚至没有提供中间变量的解决方案。现在这个要求放宽了吗?有一个更新的 Perl 解决方案提供了两者,将翻译到其他强大的语言(如 Java)留给读者一个练习。 ;)
-
感谢@DavidO,但正如您所说的那样,我已经放松了递归解决方案部分。你不会想剥夺我自学的机会吧? :) 祝你有美好的一天
标签: java c++ string-split