Объединить строки, содержащие подчеркивания - PullRequest
0 голосов
/ 01 мая 2020

Как объединить строки с подчеркиванием путем замены подчеркивания в том же месте, что и символы в другой строке. Эта функция взята из игры в сокет-палач, которую я делаю

ie Курица:

c__c ___

__ i ____

мой текущий код: c__c _____ i ____

желаемый результат: c_ic ___

Я экспериментировал с .replaceall (), однако он содержит ошибки в словах, где удваивается буква

public static void strip(String input){
  String newBlank = "";
  for(int i = 0; i < word.length(); i++){
    if (word.charAt(i) == input.charAt(0)){
      newBlank += input.charAt(0);
    } else if(blank.contains(word)){
      newBlank += guess.charAt(i);
    } else {
      newBlank += '_';
    }
  }
//Had replace all here
  blank = newBlank.replace("_", "");

Если у меня есть blank = newBlank.replace("_", ""); слова, подобные 'apple 'работать, потому что он имеет двойные буквы рядом друг с другом' pp ', однако такие слова, как курица, в конечном итоге становятся' cchiken '.

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Примечание: нацелено на очевидный уровень знаний опрашивающего.

Псевдокод для одного из способов сделать это:

let length = max(length of input1, length of input2)
let output = new char[length]
for values of i from 0 to length {
   if input1[i] != '_'
      output[i] = input1[i] // non-underscore from input1
   else
      output[i] = input2[i] // non-underscore or underscore
return output converted to array

Если input1 и input2 имеют разную длину, вы необходимо добавить код в условия if, чтобы избежать ошибок выхода за пределы массива.

Существует много способов адаптации этого псевдокода в Java; начните с того, какими способами вы уже знаете, как создавать строки или списки символов. Я вижу хороший способ сделать это с Streams, но это для более продвинутых Java программистов. Получайте удовольствие, пробуя разные способы.

0 голосов
/ 01 мая 2020
String str1 = "c__c___";
String str2 = "__i____";
StringBuilder output = new StringBuilder();

for (int i=0; i<Math.max(str1.length(), str2.length()); i++) {

  char ch1 = str1.length() >= i ? '_' : str1.charAt(i);
  char ch2 = str2.length() >= i ? '_' : str2.charAt(i);

  char result;
  if (ch1 == '_')
      result = ch2;
  else
      result = ch1;

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