Java-эквиваленты C # String.Format () и String.Join () - PullRequest
108 голосов
/ 09 октября 2008

Я знаю, что это немного новый вопрос, но есть ли эквиваленты строковым операциям C # в Java?

В частности, я говорю о String.Format и String.Join.

Ответы [ 16 ]

1 голос
/ 09 октября 2008

Если вы хотите объединить (объединить) несколько строк в одну, вам следует использовать StringBuilder. Это гораздо лучше, чем использовать

for(String s : joinMe)
    target += s;

Существует также небольшой выигрыш в производительности по сравнению с StringBuffer, поскольку StringBuilder не использует синхронизацию.

Для такого общего вспомогательного метода, как этот, он (в конце концов) будет вызываться много раз во многих ситуациях, поэтому вы должны сделать его эффективным и не выделять много временных объектов. Мы представили множество различных Java-приложений и почти всегда обнаруживаем, что конкатенация строк и распределение строк / символов [] занимают значительное количество времени и памяти.

Наш метод многократного использования -> string сначала вычисляет размер требуемого результата, а затем создает StringBuilder с этим начальным размером; это позволяет избежать ненужного дублирования / копирования внутреннего символа [], используемого при добавлении строк.

0 голосов
/ 01 июля 2015

Я вижу много слишком сложных реализаций String.Join здесь. Если у вас нет Java 1.8, и вы не хотите импортировать новую библиотеку, приведенной ниже реализации должно быть достаточно.

public String join(Collection<String> col, String delim) {
    StringBuilder sb = new StringBuilder();
    for ( String s : col ) {
        if ( sb.length() != 0 ) sb.append(delim);
        sb.append(s);
    }
    return sb.toString();
}
0 голосов
/ 01 июля 2014

Существует MessageFormat.format(), который работает как C # String.Format().

0 голосов
/ 19 ноября 2013
ArrayList<Double> j=new ArrayList<>; 
j.add(1);
j.add(.92);
j.add(3); 
String ntop=j.toString(); //ntop= "[1, 0.92, 3]" 

Таким образом, в основном String ntop хранит значение всей коллекции с разделителями-запятыми и скобками.

0 голосов
/ 21 октября 2009

Я бы просто использовал оператор конкатенации строк "+", чтобы соединить две строки. s1 += s2;

0 голосов
/ 25 июня 2009

StringUtils - довольно полезный класс в библиотеке Apache Commons Lang.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...