Есть ли способ сделать строку сценария Java в массиве, затем изменить значения массива и, наконец, превратить его обратно в строку? - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу, чтобы пользователь вводил строку, например "Hello World".затем возьмите строку и превратите ее в массив, где каждая буква является частью массива.тогда я хочу изменить значения массива.затем я хочу взять массив и объединить все части массива в строку, а затем вывести его.поэтому выход будет выглядеть как «gwkki qieks», обратите внимание, что значения замены поступают из другого массива.

Ответы [ 3 ]

0 голосов
/ 15 ноября 2018

Похоже, что вы делаете это - https://www.mehtanirav.com/qwerty-werty/

Буквы в строке отображаются на соответствующие клавиши клавиатуры и смещены так, что Q становится P, W становится Q и так далее.Сохраняя все сдвиги в словаре, мы можем перебирать символы строки и добавлять соответствующие сопоставленные буквы в новую строку.

const keyboard = {
  q:'p',w:'q',e:'w',r:'e',t:'r',y:'t',u:'y',i:'u',o:'i',p:'o',
  a:'l',s:'a',d:'s',f:'d',g:'f',h:'g',j:'h',k:'j',l:'k',
  z:'m',x:'z',c:'x',v:'c',b:'v',n:'b',m:'n',
  Q:'P',W:'Q',E:'W',R:'E',T:'R',Y:'T',U:'Y',I:'U',O:'I',P:'O',
  A:'L',S:'A',D:'S',F:'D',G:'F',H:'G',J:'H',K:'J',L:'K',
  Z:'M',X:'Z',C:'X',V:'C',B:'V',N:'B',M:'N'
}

function qwertyWerty(str) {
  let newStr = '';
  for(const char of str) {
    newStr += keyboard[char] || char
  }
  return newStr;
}

console.log(qwertyWerty("hello world"));
console.log(qwertyWerty("Hello World"));
0 голосов
/ 15 ноября 2018

Это довольно просто сделать.

  1. Создайте сопоставление ваших писем с вашими ключами.Например, от h до g, e до w и т. Д.
  2. Теперь используйте .split для создания массива символов, образующего строку.
  3. Теперь используйте ARRAY.map(KEY => VALUE) для создания нового массива с новыми значениями соответствующих символов.
  4. Теперь используйте ARRAY.join("") для преобразования списка в строку.

Вот фрагмент кода.Надеюсь, это поможет.

var string = "hello world";          // initial String 

var dictionary = {'h': 'g', 'e': 'w', 'l': 'k', 'o': 'i', 'w': 'q', 'r': 'e', 'd': 's'};
 
var old_array = string.split("");          // you'll get an array of characters
var new_array = old_array.map(c => dictionary[c] || c);

var new_string = new_array.join("");
console.log(new_string);        // Join combines all chars to string
0 голосов
/ 15 ноября 2018

Как уже упоминалось в моем комментарии, вы можете использовать .split("") для преобразования вашей строки в массив символов.Затем вы можете использовать .join(""), чтобы преобразовать его обратно в строку после внесения каких-либо изменений.

Для этого метода я бы рекомендовал использовать объект, поскольку он будет действовать как хэш-карта, так что вы этого не сделаете.нужно перебирать все заменяющие символы каждый раз:

var str = "hello world";          // Original String 

var map = {                       // Used for char replacement
  'h': 'g',
  'e': 'w',
  'l': 'k',
  'o': 'i',
  'w': 'q',
  'r': 'e',
  'd': 's'
};
 
var arr = str.split("");          // Convert to array of chars

for(var i=0; i<arr.length; i++) { // For each char in our array
  if(arr[i] in map) {             // If the char in our map 
    arr[i] = map[arr[i]];         // Then replace it
  }
}

console.log(arr.join(""));        // Join combines all chars to string

Редактировать:

Как указал @ noahnu , вы можете сделать это, используя map.Вместо стандартного цикла for вы можете использовать:

str.split("").map(c => map[c] || c).join("");

Или в ES5:

str.split("").map(function(c){ return map[c] || c}).join(""));

Это сделает текущий итерируемый символ значением map[c], если оноравен undefined, который оценивается как false, а затем вместо него будет использоваться c.

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