2015-02-22 6 views
0

Вопрос: Верните версию данной строки, где для каждой звезды () в строке звездочка и символы сразу слева и справа исчезли. Таким образом, «ab cd» дает «объявление» и «ab cd» также дает «объявление». Пример. starOut ("абы кд") → "объявление" starOut ("абы кд") → "объявление" starOut ("см eilly") → "глупый"CodingBat (Strings-2 starOut) Trouble with Strings

Я знаю, что есть ответы в Интернете, но Я не хочу их копировать. Я начал с большей части этого, но не знаю, как вынуть пробелы и преобразовать обратно в строку? Также, если вы, ребята, получите лучшее решение, не стесняйтесь это предоставить. Не предлагайте решения на основе Regex.

public static String starOut(String str) { 
    char[] array = str.toCharArray(); 
    for(int i = 0; i < array.length; i++) { 
     if(array[i] == '*' && i != 0) { 
      if(array[i - 1] != '*') { 
       array[i - 1] = ' '; 
      } 
      if(array[i + 1] != '*') { 
       array[i + 1] = ' '; 
      } 
     } 
     //Rest of Code... 
     if() 
    } 
    return str; 
} 
+0

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

+0

@GregoryBasior Я только что отредактировал в вопросе и примерах, жалею об этом. – ubaby123

ответ

0

Вы можете взять свой код, а затем просто пройти через массив и добавить его в StringBuilder.

Однако это будет проблематично, если вход может содержать пространство, так как мы просто игнорируем все пробелы. Если вход может содержать пробелы, рассмотрим установку символа на что-то еще или, возможно, используйте знак Character, чтобы вы могли установить его в null.

public static String starOut(String str) { 
    char[] array = str.toCharArray(); 
    for (int i = 0; i < array.length; i++) 
     if (array[i] == '*') { 
      if (i - 1 >= 0 && array[i - 1] != '*') 
       array[i - 1] = ' '; 
      if (i + 1 < array.length && array[i + 1] != '*') 
       array[i + 1] = ' '; 
      array[i] = ' '; 
     } 
    StringBuilder sb = new StringBuilder(); 
    for (char c : array) 
     if (c != ' ') 
      sb.append(c); 
    return sb.toString(); 
} 
+0

все равно возвращает пустую строку, и я добавил полный вопрос и некоторые примеры, если это прояснит некоторые вещи. – ubaby123