2014-10-15 2 views
0

Мне нужно упорядочить строку и получить новую строку. Ниже приведены данныеЛучший способ получить новую строку из существующей строки

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

Я обнаружил, что для этого мы можем использовать разделительную или подстроку. Каков наилучший способ рассмотрения производительности

+6

У вас есть доказательства того, что самый простой способ (возможно, просто «text.replace (« - »,« »)) вызывает значительные проблемы с производительностью в вашем приложении? –

ответ

1

Вы можете использовать Matcher.replaceAll метод.

Accroding к 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 

Вы можете использовать объект шаблон, созданный здесь несколько раз, так что это позволит сэкономить время comapred на Strring.replaceAll() метод.

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

1

Зачем нужна подстрока или сплит? Рассматривая ваш текущий String, 2014-10-15 просто замените все - на "".

Вы можете использовать String#replaceAll() в Java. Я не знаю, что вы говорите о производительности здесь, так как трудно думать о производительности в этом случае.

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

Попробуйте следующие

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

Выход:

20141015 

Note : Дело в том, чтобы заменить - с пустой строкой.

Подробнее о таких string методах визита this ссылка.

1

String.replace()

String Current= "2014-10-15"; 

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

Если вы используете какой-либо регулярное выражение означает, что вы можете пользователь String.replaceAll()

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(); 
Смежные вопросы