Android 過濾特殊字元和emoji表情
網上有很多遮蔽特殊字元和表情的例子,用起來也很簡單,比如:
//判斷搜尋框內容是否包含特殊字元 String limitEx = "[`[email protected]#$%^&*()+=|{}':;',\\[\\].<>/?~!@①#¥%……&*()——+|{}【】‘;:”“’。,、?]"; Pattern pattern = Pattern.compile(limitEx); Matcher m = pattern.matcher(str); if (m.find()) { ToastUtil.show("不能輸入特殊字元"); return groupList; }
一般都是利用正則來判斷,但是特殊字元和表情特別多 要將這些特殊字元都用正則來判斷會顯得多而臃腫。
在Activirty中呼叫:
et.addTextWatcherListener(textWatcher);
setProhiitEmoji(et);
後來在專案中看到了我們經理寫的頓時覺得高大上啊
於是趕緊整理下收藏起來方便以後再用,雖然不是很明白原理,但是用起來很方便直接放進專案裡呼叫就可以了 public void setProhibitEmoji(EditText et) {
InputFilter[] filters = { getInputFilterProhibitEmoji() ,getInputFilterProhibitSP()};
et.setFilters(filters);
}
public InputFilter getInputFilterProhibitEmoji() {
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
StringBuffer buffer = new StringBuffer();
for (int i = start; i < end; i++) {
char codePoint = source.charAt(i);
if (!getIsEmoji(codePoint)) {
buffer.append(codePoint);
} else {
ToastUtil.show("群組暱稱不能含有第三方表情");
i++;
continue;
}
}
if (source instanceof Spanned) {
SpannableString sp = new SpannableString(buffer);
TextUtils.copySpansFrom((Spanned) source, start, end, null,
sp, 0);
return sp;
} else {
return buffer;
}
}
};
return filter;
}
public boolean getIsEmoji(char codePoint) {
if ((codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA)
|| (codePoint == 0xD)
|| ((codePoint >= 0x20) && (codePoint <= 0xD7FF))
|| ((codePoint >= 0xE000) && (codePoint <= 0xFFFD))
|| ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF)))
return false;
return true;
}
public InputFilter getInputFilterProhibitSP() {
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
StringBuffer buffer = new StringBuffer();
for (int i = start; i < end; i++) {
char codePoint = source.charAt(i);
if (!getIsSP(codePoint)) {
buffer.append(codePoint);
} else {
ToastUtil.show("群組暱稱不能含有特殊字元");
i++;
continue;
}
}
if (source instanceof Spanned) {
SpannableString sp = new SpannableString(buffer);
TextUtils.copySpansFrom((Spanned) source, start, end, null,
sp, 0);
return sp;
} else {
return buffer;
}
}
};
return filter;
}
public boolean getIsSp(char codePoint){ if(Characcter.getType(codePoint)>Character.LETTER_NUMBER){ return true; } return false; }
在Anctivity中呼叫:
llLin.setOnClickListener(onClick); et.addTextChanagedListener(textWatcher); setProhibitEmoji(et);
相關推薦
Android過濾特殊字元和emoji表情
1.需求場景 現在一些輸入法自帶emoji表情,EditText是支援該字元輸入的,而對於業務來說,輸入這些字元又是不合法的,因此需要對這些字元進行過濾,在使用者輸入時即時給出提示資訊。 2.解決方法 為EditText新增輸入過濾器
Android 過濾特殊字元和emoji表情
網上有很多遮蔽特殊字元和表情的例子,用起來也很簡單,比如://判斷搜尋框內容是否包含特殊字元 String limitEx = "[`[email protected]#$%^&*()+=|{}':;',\\[\\].<
ser2net過濾特殊字元
許多流行的linux串列埠程式設計的版本中都沒對c_iflag(termios成員變數)這個變數進行有效的設定,這樣傳送ASCII碼時沒什麼問題,但傳送二進位制資料時遇到0x0d,0x11和0x13卻會被丟掉。不用說也知道,這幾個肯定是特殊字元,被用作特殊控制了。關掉ICRNL和IXON
Linux Shell特殊字元和控制字元大全
# 註釋 表示註釋 #註釋 在引號中間和\#等表示#本身 echo ${PATH#*:} # 引數替換,不是一個註釋 echo $(( 2#101011 )) # 數制轉換,不是一個註釋 ; 分隔 命令分隔,在一行中寫多個命令 echo "aa" ; echo "bb"
js遮蔽/過濾 特殊字元,輸入就刪除掉,實時刪除
1.替換方法: <input type="text" class="domain" onkeyup="this.value=this.value.replace(/[^\u4e00-\u9fa5\w]/g,'')" ; this.value=this.value.replace(/[^\u4e00-\
php 字串過濾特殊字元
* mb_ord.php <?php class Str { public static function filter(string $s, callable $f=null, string $encoding = 'UTF-8') { $enc = mb_de
jquery過濾特殊字元',防sql注入
出自: 直接上程式碼: <script type="text/javascript" language="javascript"> $(document).ready(function() { //返回 $("#btnBack").click(
處理特殊字元和移掉內聯樣式
#region 處理特殊字元 public static string DisposalSpecial(string regexStr) { var regex = new Regex("([\\\\
js解析QQ表情和emoji表情
使用的是vue 思路: 前端接受到的訊息(我是json格式),匹配出QQ表情和emoji 匹配的格式見程式碼,需要注意的是emoji要先把資料通過escape轉換成unicode之後再匹配 匹配的結果都是陣列,遍歷陣列,將匹配的內容替換為img,emoji rep
android 字串特殊字元轉義
2. 變數文字格式(%s)提示: Multiple annotations found at this line: - error: Multiple substitutions specified in non-positional format; did you mean to add the for
過濾字串中的Emoji表情
iOS 5.0之前,蘋果都是採用3個位元組來承接 emoji 表情,Java 的普通 char 可以支援顯示。但 iOS 5.0 之後, 蘋果升級了系統自帶的 emoji 表情輸入法,用的 Unicode 6 標
js過濾特殊字元
轉自:http://blog.csdn.net/you23hai45/article/details/21120119 JavaScript過濾特殊字元 1、設計例項 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1
iOS:使用NSRegularExpression正則去掉一串字串中所有的特殊字元和標點
/* 遍歷的模式,正則表示式匹配在指定options和range模式下匹配指定string,傳入block中可以獲取結果資訊 */ - (void)enumerateMatchesInString:(NSString *)string options:(NSMatchingOptions)options
php防sql注入過濾特殊字元
我在PHP4環境下寫了一個防SQL注入的程式碼,經過實際使用在PHP5下也相容,歡迎大家使用修改,使用。 程式碼如下: <?php/*sqlin 防注入類*/class sqlin{//dowith_sql($value)function dowith_sql($str){ $str = str_
Java獲取字元的Unicode編碼以及如何過濾特殊字元ZWNJ
獲取Unicode編碼 package com.xs.test; public class Test { public static void main(String[] args) throw
ASP過濾特殊字元
<%Function FormatHTML(fString) If fString<>""Then fString =trim(fString) fString =replace(fString, ";", ";") '分號過濾
Java與Mysql開發中的特殊字元(包括Emoji)
背景知識 emoji表情符號,是20世紀90年代由NTT Docomo慄田穣崇(Shigetaka Kurit)建立的,詞義來自日語(えもじ,e-moji,moji在日語中的含義是字元)。emoji可以使數字通訊做到讓人如同面對面交流,避免錯誤傳達資訊。自蘋果公司釋出的i
防止javascript 注入攻擊 js過濾特殊字元
//匹配中文 數字 字母 下劃線 var checkInput = function (str) { var pattern = /^[\w\u4e00-\u9fa5]+$/gi; if(pattern.test(c)) { return false;
android撥打特殊字元#
Uri uri = Uri.parse("tel:" + "*#*#4636#*#*");//(注:xxxxx為電話號碼) Intent intent= new Intent(Intent.ACTION_DIAL, uri); startActivity(intent
c#正則表示式過濾特殊字元
碰到了一個問題,要過濾字串中的|#|$|^|*|(|)|+|{|?|[|.這種字元。可是這些字元時正則表示式中的特殊字元,怎麼辦呢?有兩種辦法。 主要的思路是把 類似 “*” “[”的Relpace 為“\*”,"\["等 1,直接替換。 splitKey = split