Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用随机散列删除出现的内容?_Javascript_Node.js_Arrays_Reactjs_Regex - Fatal编程技术网

Javascript 如何使用随机散列删除出现的内容?

Javascript 如何使用随机散列删除出现的内容?,javascript,node.js,arrays,reactjs,regex,Javascript,Node.js,Arrays,Reactjs,Regex,我在React应用程序中有一个受控的,用户可以在其中键入 我想跟踪它,并将出现的$.text和$.lang替换为随机散列/数字 来自 let string='我可能有多个$.text和$.lang,比如$.text和$.lang'; 我希望所有出现的$.text和$.lang都有一个随机数(或任何唯一的): 至 updateString='我可能有多个123和245,比如744和111'; 我到目前为止所做的事情 let temp=value.split(“”).reverse().join

我在React应用程序中有一个受控的
,用户可以在其中键入

我想跟踪它,并将出现的
$.text
$.lang
替换为随机散列/数字

来自

let string='我可能有多个$.text和$.lang,比如$.text和$.lang';
我希望所有出现的$.text和$.lang都有一个随机数(或任何唯一的):

updateString='我可能有多个123和245,比如744和111';
我到目前为止所做的事情

let temp=value.split(“”).reverse().join(“”);//将其反转以查找最近发生的事件
让reText=/txet.\$/i;
设reLang=/gnal.\$/i;
让我们更新;
if(value.includes('$.text')){
updated=temp.replace(reText,`${hash}}#`)//替换最新出现的
}否则{
updated=temp.replace(reLang,`${hash}#`)//替换最新出现的
}
updatedValue=updated.split(“”).reverse().join(“”);//把它倒过来

问题是它会替换输入状态,但一旦更改就会重置输入状态,并且只会更改最后一次出现的输入状态。

因此,我会在单击时执行此操作。假设用户键入一些内容,然后单击
Replace Template
按钮将
$.text
$.lang
替换为一些随机数。如果需要,可以插入特定的哈希或数字

const replaceTemplateByRandom = (val, temp) => {
  while(val.indexOf(temp) != -1){
      const numb = Math.floor(Math.random()*1000);
      val = val.replace(temp, numb);
  }
  return val;
}
在这个arrow函数中,我运行while循环,直到找到要替换的模板,并用随机数替换出现的模板

const replaceTemplateByRandom=(val,temp)=>{
while(val.indexOf(temp)!=-1){
const numb=Math.floor(Math.random()*1000);
val=val.replace(温度、编号);
}
返回val;
}
功能应用程序(道具){
const[val,setVal]=React.useState('默认文本为$.text,语言为$.lang.);
const updateVal=(e)=>{
const newVal=e.target.value;
setVal(newVal);
}
常量替换模板=()=>{
设currentVal=val;
currentVal=replaceTemplateByRandom(currentVal,$.text');
currentVal=replaceTemplateByRandom(currentVal,$.lang');
setVal(currentVal);
}
返回
替换模板
;
}
ReactDOM.render(,document.getElementById('app'))

您可以利用
.replace()
接受的函数进行自定义和动态替换:

函数myHashFunction(匹配)
{
//取消对此行的注释以查看各种匹配项
//控制台日志(匹配);
//我只是返回一个随机数,你需要把它改成散列算法
返回Math.floor(Math.random()*Math.floor(99999999999));
}
let str=`我可能有多个$.text和$.lang,比如$.text和$.lang`;
log(str.replace(/\$\(?:text | lang)/g,myHashFunction))
函数myFunction(){
var theString=“你今天过得怎么样?”;
var splitString=theString.split(“$.you”);
var joinedString=“”;
对于(索引=0;索引
像这样简单的事情可能就可以完成这项工作。 因此,将字符串拆分为一个字符串数组,然后用一个特定的字符串将其连接回来。
没有具体的反应,但想法就在那里。

那么您想在用户键入后立即用随机数替换
$.text
$.lang
?还是在“但是”事件上?是否单击submit?是的,当用户键入时。如果让用户键入一个句子,然后点击它的中间来键入<代码> $.text <代码>,那么它就应该被忽略了。我希望最终的输入状态没有任何$.text或$Lang.确切地说是散列是什么?散列可以产生
$.text
$.lang
字面意思吗?你是一个传奇!!我们可以快速聊天吗?除此之外,我还有一个小问题?很高兴它对您有效,如果我能帮助您,请告诉我。开始与您聊天我担心如果
replaceAll
在旧浏览器中将失败?当我们将regex与global
/g
replace
一起使用时,它会起作用。@DeepakSharma谢谢,我忘了Internet Explorer不支持
replaceAll()
1)
str
未定义,因此您的代码被破坏。2)
Math.random()
应该每
$执行一次。您
而不是将该值重新用于所有
$。您
sSorry,我只给出一个大概的概念是多么粗鲁啊。编辑了我的答案。
today?
joinedString
function myFunction() {
    var theString = "How are $.you doing $.you today?";
    var splitString = theString.split("$.you");
    var joinedString = "";
    for(index = 0; index < splitString.length-1; index++){
        joinedString += splitString[index] + Math.random();
    }
    document.getElementById("demo").innerHTML = joinedString;
}