我想编写此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);
}
}
答案 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] !== '_')
避免用'_'替换空格
:)