gpt4 book ai didi

java - 使用 java 将表情符号从字符串替换为字符串

转载 作者:行者123 更新时间:2023-12-01 15:16:10 25 4
gpt4 key购买 nike

如何从字符串中删除表情符号我的简单代码是..

public static void main(String[] args) throws SQLException {
String str="My nam is ur -D ";
getRefineCode(str);
}

private static void getRefineCode(String str) throws {
List smstypeWord=getshortWord();
for(int i=0;i<smstypeWord.size();i++) {
String string=smstypeWord.get(i).toString();
String stringcon[]=string.split("_");
String emessage=stringcon[0];
String emoticon=stringcon[1].trim();
if(str.contains(emoticon)) {
str=str.replace(emoticon, emessage);
System.out.println("=================>"+str);
}
}
System.out.println("=======++==========>"+str);
}

private static List getshortWord() throws SQLException {
String query1 = "SELECT * FROM englishSmsText";
PreparedStatement ps = conn.prepareStatement(query1);
ResultSet rs = ps.executeQuery();
String f_message="";
String s_message="";
while(rs.next()) {
s_message=rs.getString("message");
f_message=rs.getString("short_text");
shortMessage.add(s_message+"_"+f_message);
//fullMessage.add(f_message);
}
return shortMessage;
}

我的数据库基于http://smsdictionary.co.uk/abbreviations网站

我能够理解如何删除多个 abb。或短信

输出就像我的名字是你 SquintLaughtGrinisappGaspoooh!!shockedintedr, Big SmilGrinisappGaspoooh!!shockedinted, Grin

最佳答案

首先,replace应该是replaceAll ,否则您只会捕获第一次出现的表情符号或缩写。

其次,您可以通过仅匹配整个单词来减少误报数量。 replaceAll接受正则表达式,因此您可以使用 replaceAll("\\b" + emoticon + "\\b", emessage)仅替换被单词边界(空格、标点符号等)包围的缩写。

但是,使用您正在使用的字典,您仍将替换 KISSKeep It Simple, Stupid 。您将替换86"out Of" Or "over" Or "to Get Rid Of" ...也许您应该寻找不同的方法。

编辑:我忘了你正在寻找特殊字符。您应该尝试像这样的正则表达式,它将抑制搜索字符串中的特殊字符(并且比之前过于严格的 \b 模式更慷慨):

replaceAll("((?<=\\W)|^)\\Q" + emoticon + "\\E((?=\\W)|$)", emessage);

它应该涵盖大多数情况,我怀疑是否有任何方法可以完美识别什么是首字母缩略词,什么不是。

关于java - 使用 java 将表情符号从字符串替换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com