2015-06-19 9 views
1

У меня есть какой-нибудь метод utils в Java, который бы позволил мне окружить строку другой строкой? Что-то вроде:Surround string с другой строкой

surround("hello","%"); 

возвращающие бы "%hello%"

мне нужен только один метод, так что код будет лучше, а затем добавить префикс и суффикс. Также я не хочу иметь собственный класс utils, если он не нужен.

+5

Я не знаю такого метода, но это одна реализация линии, так что вряд ли трудно писать себя ... –

+0

Я согласен, но все-таки это реализация, которая добавляет мой пользовательский код в систему. Мне нужно это на большем количестве мест, поэтому мне нужен некоторый класс util, который должен быть протестирован, есть вероятность ошибки и т. Д.Поэтому я ищу существующее решение. – Michal

+0

Это единственная строка. Это легко проверить. Как я уже сказал, я не думаю, что такой метод существует в Java (это не то, что обычно нужно делать). –

ответ

4

string.Format могут быть использованы для этой цели:

String s = String.format("%%%s%%", "hello");

+0

Спасибо за идею, однако правильная последовательность экранирования - это «%%% s %%», – Michal

+0

да, конечно;) извините за это, я больше C/C++ парень – maximus

2

Создать новый метод:

public String surround(String s, String surr){ 
    return surr+s+surr; 
} 
3

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

private String SurroundWord(String word, String surround){ 
    return surround + word + surround; 
} 

Обратите внимание, что это вернет объект New String и не будет редактировать исходную строку.

5

Нет, но вы всегда можете создать метод, чтобы сделать это:

public String surround(String str, String surroundingStr) { 

    StringBuffer buffer = new StringBuffer(); 
    buffer.append(surroundingStr).append(str).append(surroundingStr); 

    return buffer.toString(); 
} 

У вас есть еще один способ сделать это, но Не делайте этого, если вы хотите повысить производительность: -

public String surround(String str, String surroundingStr){ 

    return surroundingStr + str + surroundingStr; 
} 

Почему бы не использовать второй метод?

Как мы все знаем, строки в Java неизменяемы. Когда вы объединяете строки трижды, они создают два новых строковых объекта помимо ваших исходных строк str и surroundingStr. И поэтому создано всего 4 строковых объекта:

1. str 
2. surroundingStr 
3. surroundingStr + str 
4. (surroundingStr + str) + surroundingStr 

И для создания объектов требуется время. Поэтому для долгосрочного использования второй метод понизит вашу производительность с точки зрения пространства и времени. Так что это ваш выбор, какой метод следует использовать.

Хотя это не тот случай после того, как Java 1.4

как concatinating строки с оператором + использует StringBuffer в фоновом режиме. Поэтому использование второго метода не является проблемой, если ваша версия Java 1.4 или выше. Но все же, если вы хотите, чтобы конкатенировать строки, это цикл, будьте осторожны.

Мое предложение:

Либо использовать StringBuffer из StringBuilder.

+0

Thankyou для напоминания. Эта вещь была добавлена ​​после Java 1.4. Спасибо. Ответ отредактирован –

2

Испытано ниже и возвращает %hello%

public static void main (String[] args) throws java.lang.Exception 
{ 
    System.out.println(surround("hello", "%")); 
} 
public static String surround(String s, String sign) { 
    return sign + s + sign; 
} 
+0

Зачем оставлять поздний ответ, это то же самое, что и у 3 других? –

+1

Мне потребовалось больше времени, чем другие, когда я нажал сообщение, там, где нет ответов. Сожалею. – Ignotus

Смежные вопросы