从现有字符串中获取新字符串的最佳方法

时间:2014-10-15 10:15:26

标签: java string

我需要重新排列String并获取一个新的String。以下是详细信息

Current String = 2014-10-15
New String = 20141015

我发现我们可以使用split或sub字符串。我们考虑绩效时最好的方法是什么

5 个答案:

答案 0 :(得分:1)

为什么要子串或拆分?通过查看您当前的String2014-10-15只需将所有-替换为""

您可以在Java中使用String#replaceAll()。我不知道你在这里谈论的是什么,因为在这种情况下很难想到性能问题。

 "2014-10-15".replaceAll("-","")

答案 1 :(得分:1)

尝试以下

String Current= "2014-10-15";
Current=Current.replaceAll("-","");
System.out.println(Current);

输出

20141015

Note :问题是用空字符串替换-

更多关于此类string方法,请访问this链接。

答案 2 :(得分:1)

String.replace()

String Current= "2014-10-15";

System.out.println(Current.replace("-", ""));

如果您使用任何正则表达式,则可以使用String.replaceAll()

答案 3 :(得分:1)

您可以使用Matcher.replaceAll方法。

  

加入String doc   String.split()创建并编译一个新的Pattern对象。 String.replace()方法也是如此。如果在紧密循环中调用split()或replace()函数,则每次编译模式都会导致程序出现性能问题。

以下是示例代码

Pattern replace = Pattern.compile("-");
Matcher matcher = replace.matcher("2014-10-15");
System.out.println(matcher.replaceAll(" "));//out put is:20141015

您可以多次使用此处创建的Pattern对象,这样可以节省coringred到Strring.replaceAll()方法的时间。

阅读:Hidden evils of Java’s String.split() and replace()

答案 4 :(得分:1)

我认为此代码比replaceAll()快得多。 另外,如果我没弄错的话,replaceAll()会默默使用Matcher.replaceAll(),因此它们之间没有任何重大差异。

String text = "123-66-4564-45";
StringBuilder buffer = new StringBuilder();
int length = text.length();
char[] temp = new char[length];
text.getChars(0, text.length(), temp, 0);
for (char c : temp) {
    if ('-' != c) {
        buffer.append(c);
    }
}
String newText = buffer.toString();