【问题标题】:Is there any way yo make a java script string into an array then change the array values then lastly make it back into a string [closed]有什么办法可以将一个java脚本字符串变成一个数组然后改变数组值然后最后把它变成一个字符串[关闭]
【发布时间】:2018-11-14 23:04:51
【问题描述】:

我想要一个用户输入的字符串,比如“hello world”。然后获取字符串并将其转换为数组,每个字母都是数组的一部分。然后我想更改为数组的值。然后我想获取数组并将数组的所有部分组合成一个字符串然后输出它。所以输出看起来像“gwkki qieks”注意替换值来自另一个数组。

【问题讨论】:

  • 确实如此。您可以使用var arr = str.split(""),然后您可以对其进行更改,然后使用arr.join("") 将其转换为数组。之前可能已经问过一个类似的问题,我会看看我是否能找到它。
  • 欢迎来到 StackOverflow!当您要求您尝试解决您的查询并发布结果,您已经进行了一些研究,并且您清楚地让我们知道您正在寻找的结果是什么时,这是必需的。请看stackoverflow.com/help/how-to-ask

标签: javascript arrays string


【解决方案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

【讨论】:

  • ...或者一个仍然非常可读的衬里:'hello world'.split('').map(c =&gt; map[c] || c).join('')
  • @noahnu 是的,这可以用更少的代码完成。由于 OP 似乎是一个初学者/学生,我想让这个更像伪代码,这样他们就可以更清楚地理解如何从逻辑上解决他们的问题。
  • 是的,我想,这就是为什么我把它作为评论来展示替代方案
【解决方案2】:

看起来你正在这样做 - 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"));

【讨论】:

    【解决方案3】:

    这很简单。

    1. 创建您的字母到您想要的键的映射。例如,hgew 等等。
    2. 现在使用.split 从字符串中创建一个字符数组。
    3. 现在使用ARRAY.map(KEY =&gt; VALUE) 创建一个新数组,其中包含相应字符的新值。
    4. 现在使用ARRAY.join("") 将列表转换为字符串。

    这里是代码 sn-p。希望这会有所帮助。

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      相关资源
      最近更新 更多