javascript用下划线替换随机字母

时间:2018-07-06 14:51:18

标签: javascript replace character

我想编写此Google电子表格javascript代码,以替换字符串中的随机字母。

我创建了一个执行此操作的代码,但不是随机执行的,而且还用下划线替换了空格(这是有问题的)。

我感兴趣的最终结果是从中得到(句子是法语):

'J’habite à New York.'

对此:

'_’h_b_t_ à _ew _or_.'

假设给定一个句子,至少必须用下划线代替字母数量的一半。

感谢您的帮助。 (ps:我不是程序员)

我到目前为止的代码:

var v =  [['J’habite à New York.', 'Sì', ], ['Je m’appelle John. !']]; 

for (var r in v){
  for (var c in v[r]){
    var d = v[r][c];
    var l = d.length; 

    var u = l; 
    while(u > 0){
    var res = d.replace(d[u-2], '_');
    d = res; 
    u = u - 2;
      }
    console.log(res);
      }
    }

2 个答案:

答案 0 :(得分:2)

您有点复杂。只需将字符串转换成字符数组,然后将其映射到替换了某些字母的字符数组,然后将其转换回字符串即可。

function replace(str) {
  return str.split("").map(char => Math.random() > 0.5 ? "_" : char).join("");
}


var v = [
  ['J’habite à New York.', 'Sì', ],
  ['Je m’appelle John. !', 'Non!',]
];


for (const pair of v) {
  pair[0] = replace(pair[0]);
  pair[1] = replace(pair[1]);
}

console.log(v)

答案 1 :(得分:1)

您可以尝试这样的方法:)

int main() {
    int n; 
    cin >> n;
    vector<int> a(n);
    for(int i = 0; i < n; ++i) 
        cin >> a[i];
    int64_t opsize = pow(2,n);
    for (int counter = 1; counter < opsize; counter++) {
        for (int j = 0; j < n; j++) {
           if (counter & (1 << j))
                 cout << a[j] << " ";
        }
        cout << endl;
    }
}

编辑:我现在在控制台上尝试了它,似乎正在工作。它给您带来什么问题?

2°编辑:您可以这样做:

var a = "Text i want to replace text from";
var splitted = a.split('');
var count = 0; // variable where i keep trace of how many _ i have inserted

while(count < a.length/2) {
   var index = Math.floor(Math.random()*a.length); //generate new index
   if(splitted[index] !== '_' && splitted[index] !== ' ') {
       splitted[index] = '_';
       count++;
   } 
}

var newstring = splitted.join(""); //the new string with spaces replaced

代替

splitted[index] = ' _ ';

还请注意,我从以下位置更改了if条件:

splitted[index] = '_';

if(splitted[index] !== '_')

避免用'_'替换空格

:)