替换JavaScript中的emojies列表
我有一个表情符号列表,如:替换JavaScript中的emojies列表,javascript,jquery,regex,replace,Javascript,Jquery,Regex,Replace,我有一个表情符号列表,如: var emojies = ["smile", "smiley", "grin", "joy"]; 我想用一个函数检测并替换:emoji\u name:,例如,如果文本是:Hi guys!:smile:,用替换:smile:,我想正则表达式可以解决这个问题,但是,怎么做呢?加入你的数组并创建一个正则表达式,然后你可以使用replace和回调函数(或者像sln的答案一样使用单行替换)来创建跨度 注意:假设所有表情符号的名称都在: var emojies = ["smi
var emojies = ["smile", "smiley", "grin", "joy"];
我想用一个函数检测并替换
:emoji\u name:
,例如,如果文本是:Hi guys!:smile:,用
替换:smile:
,我想正则表达式
可以解决这个问题,但是,怎么做呢?加入你的数组并创建一个正则表达式,然后你可以使用replace和回调函数(或者像sln的答案一样使用单行替换)来创建跨度
注意:假设所有表情符号的名称都在:
var emojies = ["smile", "smiley", "grin", "joy"];
//Create a single regex
var regex = new RegExp(":("+ emojies.join("|") +"):","g");
/* Will result in /:(smile|smiley|grin|joy):/g
* which basically is find smile OR simely OR grin OR joy
* between : and :
*/
var ele = document.getElementById("#whateverElement");
var result = ele.innerText.replace(regex,function(fullmatch,match){
//fullmatch will be like :smile:
//while match will be like smile, so you would want to use match in the class
//Using a simple jquery call to create the span
//you could also just use string concatenation
var span = jQuery("<span>",{ class: "emoji "+match });
//return the text you want to replace fullmatch with
return span[0].outerHTML;
});
ele.innerHTML = result;
这是一个例子:微笑:,一些文字:微笑::欢乐::欢乐:
加入您的数组并创建一个正则表达式,然后您可以使用带有回调函数的replace(或者像sln的答案一样使用单行replace)来创建跨度
注意:假设所有表情符号的名称都在:
var emojies = ["smile", "smiley", "grin", "joy"];
//Create a single regex
var regex = new RegExp(":("+ emojies.join("|") +"):","g");
/* Will result in /:(smile|smiley|grin|joy):/g
* which basically is find smile OR simely OR grin OR joy
* between : and :
*/
var ele = document.getElementById("#whateverElement");
var result = ele.innerText.replace(regex,function(fullmatch,match){
//fullmatch will be like :smile:
//while match will be like smile, so you would want to use match in the class
//Using a simple jquery call to create the span
//you could also just use string concatenation
var span = jQuery("<span>",{ class: "emoji "+match });
//return the text you want to replace fullmatch with
return span[0].outerHTML;
});
ele.innerHTML = result;
这是一个例子:微笑:,一些文字:微笑::欢乐::欢乐:
似乎是一个简单的问题text.replace(/:(smile | smiley | grin | joy):/g'代码>
应该这样做。似乎是个简单的问题
text.replace(/:(smile | smiley | grin | joy):/g'代码>
应该这样做。循环遍历所有数组项,并使用正则表达式替换所有数组项。然后把绳子放进容器里
我的功能
function stringToEmoji(text){
var findText = '',
htmlString = '';
$.each(emojies, function(i, _this){
findText=new RegExp(':'+$.trim(_this)+':','i');//need to add 'gi' to work properly
htmlString = text.replace(findText,"<span class='emoji " + _this + "emoji_name'></span>")
})
return htmlString;
}
函数stringToEmoji(文本){
var findText=“”,
htmlString='';
$.each(emojies,function(i,_this){
findText=newregexp(':'+$.trim(_this)+':','i');//需要添加'gi'才能正常工作
htmlString=text.replace(findText,“”)
})
返回htmlString;
}
使用Patrick的答案进行改进
function stringToEmoji(text){
var findText = '',
htmlString = '',
regex = new RegExp(":("+ emojies.join("|") +"):","gi");
htmlString = text.replace(regex,"<span class='emoji $1'></span>");
return htmlString;
}
函数stringToEmoji(文本){
var findText=“”,
htmlString='',
regex=newregexp(“:(“+emojies.join(“|”)+”,“gi”);
htmlString=text.replace(regex,“”);
返回htmlString;
}
循环遍历所有数组项,并使用正则表达式替换所有数组项。然后把绳子放进容器里
我的功能
function stringToEmoji(text){
var findText = '',
htmlString = '';
$.each(emojies, function(i, _this){
findText=new RegExp(':'+$.trim(_this)+':','i');//need to add 'gi' to work properly
htmlString = text.replace(findText,"<span class='emoji " + _this + "emoji_name'></span>")
})
return htmlString;
}
函数stringToEmoji(文本){
var findText=“”,
htmlString='';
$.each(emojies,function(i,_this){
findText=newregexp(':'+$.trim(_this)+':','i');//需要添加'gi'才能正常工作
htmlString=text.replace(findText,“”)
})
返回htmlString;
}
使用Patrick的答案进行改进
function stringToEmoji(text){
var findText = '',
htmlString = '',
regex = new RegExp(":("+ emojies.join("|") +"):","gi");
htmlString = text.replace(regex,"<span class='emoji $1'></span>");
return htmlString;
}
函数stringToEmoji(文本){
var findText=“”,
htmlString='',
regex=newregexp(“:(“+emojies.join(“|”)+”,“gi”);
htmlString=text.replace(regex,“”);
返回htmlString;
}
你能告诉我们你试过什么吗?如果你想拔出你所有的头发,你可以使用正则表达式,如果你没有冰雹,那么指甲就足够了。如果您不反对,可以尝试使用JQuery搜索DOM并基于内容进行替换。或者,如果您只搜索javascript表情分析器
我在下面的链接中尝试了答案,那么有许多源代码库:但没有成功。我是begginer,所以,正则表达式对我来说很难:/而且,我不知道regex
是否是最好的方法,但这正是我所想的。你能告诉我们你已经尝试了什么吗?如果你想拔出你所有的头发,你可以使用正则表达式,如果你没有冰雹,那么指甲可能就足够了。如果您不反对,可以尝试使用JQuery搜索DOM并基于内容进行替换。或者,如果您只搜索javascript表情分析器
我在下面的链接中尝试了答案,那么有许多源代码库:但没有成功。我是begginer,所以,正则表达式对我来说很难:/而且,我不知道正则表达式是否是最好的方法,但这正是我所想的。我怀疑它,尝试了它。:smiley::smiley::grin::joy:
,我得到的是
。但这是解决方案的一部分。@sln将\1
替换为$1
,+1虽然对于较短的替换,您忘记了可以这样做:)我怀疑,尝试了:smiley::smiley::grin::joy:
,我得到的是
。但这是解决方案的一部分。@sln将\1
替换为$1
,+1但对于较短的替换,您可以这样做:)@PatrickEvans我们可以对区分大小写做些什么吗?我的意思是,即使情况不同,这也能起作用。如果我们使用“gi”
,那么可能存在css问题。@Igor,您需要执行:var result=stringToEmoji(test)$(“.context”).html(结果)代码>,至于敏感度,请使用gi
,只需在返回之前在html上使用小写即可!我是否可以在$(文档)中使用此函数。就绪(函数…
?@Igor,已修复。是的,您可以确保函数创建部分在就绪之前,然后执行$(“.content div”)。toEmoji()
在ready中。@PatrickEvans对于区分大小写,我们可以做些什么吗?我的意思是,即使大小写不同,我们也可以这样做。如果我们使用“gi”
,那么可能会有css问题。@Igor,您需要做:var result=stringToEmoji(test);$(.context”).html(result);
,至于敏感度,我们使用gi
,在返回它之前只需在html上使用小写即可!我可以在$(文档)中使用此函数吗。就绪(函数…
?@Igor,已修复。是的,您可以确保函数创建部分在就绪之前,然后执行$(“.content div”).toEmoji()
在ready中。