var maskPII = function(S) { var ans = ""; if(S.includes("@")){ S = S.toLowerCase(); var parts = S.split("@"); var first = parts[0]; for(var i=0;i<parts[0].length;i++){ if(i!=0 && i!=parts[0].length - 1) first[i] = '*'; } ans = first +"@" +parts[1]; }else{ } return ans; };
我的目标是编辑字符串(包含电子邮件)以掩盖第一部分,例如说电子邮件为
[email protected]
,那么我应该输出j*****[email protected]
。
但是在循环中,我无法将字符更改为星号。
执行后,我看到first的值仍然与parts[0]
相同并且没有星号,有人可以解释为什么吗?另外,我该怎么做才能在循环内修改变量?
var maskPII = function(S){var ans =“”; if(S.includes(“ @”)){S = S.toLowerCase(); var parts = S.split(“ @”); var first = parts [0]; for(var i = 0; i
要回答您的问题... javascript允许您使用[]索引访问字符串的值..但是这是只读访问...您不能使用该运算符插入/替换值。
参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String
When using bracket notation for character access,
attempting to delete or assign a value to these properties will not succeed.
The properties involved are neither writable nor configurable.
(See Object.defineProperty() for more information.)
嗯,这就是您要寻找的,这将是输出j*****[email protected]
。
这是您使用的方法的代码: