有什么办法可以将Java脚本字符串转换为数组,然后更改数组值,最后将其转换回字符串

时间:2018-11-14 23:04:51

标签: javascript arrays string

我想让用户输入类似“ hello world”的字符串。然后将字符串转换为数组,每个字母都是数组的一部分。然后我想更改为数组的值。那么我想把数组和数组的所有部分组合成一个字符串,然后输出它。因此输出看起来像“ gwkki qieks”,请注意替换值来自另一个数组。

3 个答案:

答案 0 :(得分:1)

如我的评论中所述,您可以使用.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代替。

答案 1 :(得分:0)

您似乎正在执行此操作– 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"));

答案 2 :(得分:-1)

这很简单。

  1. 创建字母到所需键的映射。例如,hgew,依此类推。
  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