2017-01-27 3 views
0

Я хочу вставить символы в строку со циклом for. Я знаю, как это сделать без петли:Вставка символов в строку через цикл

String s = "Hello"; 
String x = " "; 
x = s.substring(0, 1) + "*" +s.substring(1, 2) + "*" + s.substring(2,3) +"*"+s.substring(3,4) +"*" +s.substring(4,5); 
System.out.println(x); 

Но теперь, когда дело доходит до этого, я имею проблему. Мой подход заключается в следующем:

String y =""; 
for(int i= 0; i<=s.length(); i++){ 
    y = s.substring(0, i) + "*" +s.substring(i); 
} 
System.out.println(y); 
+0

Должна ли быть петля? – Pshemo

+0

'String y = s.replaceAll (" (?!^| $) "," * ");' – Holger

ответ

0

вы можете использовать charAt метод, в вашем втором коде, просто быть в курсе Струнные границ, чтобы не получить StringIndexOutOfBoundException:

String x = "Hello"; 
String y =String.valueOf(x.charAt(0)); 
for(int i= 1; i<x.length(); i++) 
    y += "*"+x.charAt(i); 
System.out.println(y); 

мой совет Использование StringBuilder Вместо строки , это более эффективный :

String x = "Hello"; 
StringBuilder y = new StringBuilder(String.valueOf(x.charAt(0))); 
for(int i= 1; i<x.length(); i++) 
    y.append("*").append(x.charAt(i)); 
System.out.println(y); 

в этом примере выходной сигнал для обоих кодов H*e*l*l*o

+0

Немного проблем: (1) ваши примеры не будут компилироваться, (2) они не будут предоставлять ожидаемые результаты. Кроме того, мы действительно не должны * использовать 'charAt', есть и другие способы. – Pshemo

+0

, который мне очень помог! спасибо :) – lks95

+0

Только первый пример делает то, что ожидает OP. 'new StringBuilder (x.charAt (0))' не делает то, что, по вашему мнению, делает. Подсказка: нет конструктора 'StringBuilder (char)', вместо этого используется 'StringBuilder (int)'. – Pshemo

2

Как насчет:

String input = "TestInput"; 

    StringBuilder b = new StringBuilder(); 
    b.append(input.charAt(0)); 
    for (int i = 1; i < input.length(); i++) { 
     b.append("*").append(input.charAt(i)); 
    } 
    System.out.println(b); 
} 

дает:

T*e*s*t*I*n*p*u*t 

Является ли это то, что вы хотели?

Edit: предложение Pshemo в - использовать StringJoiner (8 решение Java)

StringJoiner sj = new StringJoiner("*"); 
     for (int i = 0; i < input.length(); i++) { 
      sj.add(input.substring(i, i + 1)); 
     } 
     System.out.println(sj.toString()); 

И не StringBuilder версия:

String input="TestInput"; 
    String y = ""; 
    for (int i = 0; i < input.length(); i++) { 
     y += "*" + input.charAt(i); 
    } 

И к вашему knowlage - с помощью конкатенации не рекомендуется. Лучше использовать StringBuilder или StringJoiner

+0

Или с Java 8 мы можем использовать 'StringJoiner' с' * 'в качестве разделителя. – Pshemo

+0

да это в основном то, что я хочу. im довольно новый для java, и я еще не знаю метод append. возможно ли это сделать без .append? – lks95

+0

@ Iks95 дополнительные 2 решения в ответе edit – Antoniossss

0
public static String insertChar(String str, char character){ 

    char[] charArray=str.toCharArray(); 
    String result=""; 
    for(int i=0;i<charArray.length;i++){ 
     result=result+charArray[i]; 
     if(i<charArray.length-1){ 
      result=result+character; 
     } 
    } 
    return result; 
} 

System.out.println (insertChar ("Hello", '*'));

3

В Java 8+ вы можете сделать следующее

String x = "Hello"; 
String result = Stream.of(x.split("")) 
         .collect(Collectors.joining("*")); 

Результат H*e*l*l*o.

В принципе, вы создаете поток строк с длиной 1 и собираете их с использованием Коллектора, который соединяет их, используя *. При таком подходе вы не должны рассматривать любые пространственные случаи, как последний/первый элемент или удалить дополнительный * от конца и т.д ..

3
 String s = "Hello"; 
     String x = String.join("*",s.split("")); 
     System.out.println(x); 
0

Вы можете следить за следующий фрагмент кода с помощью цикла (как вы упомянули), чтобы добавить символ в строку.

String s = "HelloWorld"; 
    String y =""; 
    Character c = '*'; 
    int length = s.length(); 

    for(int i = 1; i<= length; i++) { 
     if(i == length) 
      y += s.substring(i-1, i); 
     else 
      y += s.substring(i-1, i) + c; 
    } 

    System.out.println(y); 
Смежные вопросы