как добавить дефис между строкой - PullRequest
2 голосов
/ 14 апреля 2010

У меня следующий код xxxxx, я хочу добавить дефис, например x-xxxx, как я могу это сделать с помощью Java?

Ответы [ 6 ]

13 голосов
/ 14 апреля 2010

Вы можете использовать String#substring().

String newstring = string.substring(0, 1) + "-" + string.substring(1);

Вам нужно только проверить длину строки заранее, чтобы избежать IndexOutOfBoundsException, но это не более чем очевидно.

4 голосов
/ 14 апреля 2010

Предполагая

String in = "ABCDEF";
String out;

Затем любой из :

out = in.replaceFirst(".", "$0-");

или

out = String.format("%1$s-%2$s", in.substring(0,1), in.substring(1));

или

out = in.substring(0,1) + "-" + in.substring(1);

или

out = new StringBuilder(in).insert(1, '-').toString();

составит out = "A-BCDEF".

4 голосов
/ 14 апреля 2010

String - это неизменяемый тип в Java, что означает, что вы не можете изменить последовательность символов, которую он представляет, после создания String.

Вы можете использовать экземпляр класса StringBuilder для создания нового экземпляра String, который представляет некоторую трансформацию исходного String. Например, добавив дефис, как вы просите, вы можете сделать это:

String str = "xxxxx";
StringBuilder builder = new StringBuilder(str);
builder.insert(1, '-');
String hyphenated = builder.toString(); // "x-xxxx"

StringBuilder изначально содержит копию содержимого str; "xxxxx".

Вызов insert изменяет содержимое компоновщика на "x-xxxx".

Вызов toString возвращает новое String, содержащее копию содержимого построителя строк.

Поскольку тип String является неизменным, никакие манипуляции с содержимым StringBuilder никогда не изменят содержимое str или hyphenated.

Вы можете изменить то, что String экземпляр str ссылается на , выполнив

str = builder.toString();

вместо

String hyphenated = builder.toString();

Но никогда не изменяется содержимое строки, на которую ссылается str, потому что это невозможно. Вместо этого str раньше ссылался на экземпляр, содержащий "xxxxx", а теперь ссылается на экземпляр, содержащий "x-xxxx".

1 голос
/ 14 апреля 2010

Вы можете сделать:

String orgStr = "xxxxx";
String newStr = orgStr.substring(0,1) + "-" + orgStr.substring(1)
1 голос
/ 14 апреля 2010
String xxx = "xxxxx";
String hyphened = xxx.substring(0,1) + "-" + xxx.substring(1);
0 голосов
/ 12 мая 2017

Вот еще один способ:

MaskFormatter fmt = new MaskFormatter("*-****");
fmt.setValueContainsLiteralCharacters(false);
System.out.println(fmt.valueToString("12345"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...