簡體   English   中英

檢查字符串是否包含日文/中文字符

[英]Check whether a string contains Japanese/Chinese characters

我需要一種方法來檢查字符串是否包含日文中文文本。

目前我正在使用這個:

string.match(/[\u3400-\u9FBF]/);

但它不適用於例如:ディアボリックラヴァーズバッテリー

你能幫我解決這個問題嗎?

謝謝

通常用於中文和日文文本的 Unicode 字符范圍是:

  • U+3040 - U+30FF:平假名和片假名(僅限日語)
  • U+3400 - U+4DBF:CJK統一表意文字擴展A(中文、日文、韓文)
  • U+4E00 - U+9FFF:CJK 統一表意文字(中文、日文和韓文)
  • U+F900 - U+FAFF:CJK 兼容表意文字(中文、日文和韓文)
  • U+FF66 - U+FF9F:半角片假名(僅限日語)

作為正則表達式,這將表示為:

/[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/

這並不包括將出現在中文和日文文本中的每個字符,但任何重要的典型中文或日文文本都將主要由這些范圍內的字符組成。

請注意,此正則表達式也將匹配包含hanja 的韓文文本 這是漢族統一的必然結果。

swift 4,將模式更改為和 NSRegularExpression 替換,也許可以幫助某人!

[\u{3040}-\u{30ff}\u{3400}-\u{4dbf}\u{4e00}-\u{9fff}\u{f900}-\u{faff}\u{ff66}-\u{ff9f}]

擴展方法

mutating func removeRegexMatches(pattern: String, replaceWith: String = "") {
        do {
            let regex = try NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive)
            let range = NSMakeRange(0, self.count)
            self = regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: replaceWith)
        } catch {
            return
        }
    }

    mutating func removeEastAsianChars() {
        let regexPatternEastAsianCharacters = "[\u{3040}-\u{30ff}\u{3400}-\u{4dbf}\u{4e00}-\u{9fff}\u{f900}-\u{faff}\u{ff66}-\u{ff9f}]"
        removeRegexMatches(pattern: regexPatternEastAsianCharacters)
    }

例如,字符串結果是 ABC

"ABC検診センター".removeEastAsianChars()

您可以使用此代碼,它對我有用。

let str = "渣打銀行提供一系列迎合你生活需要嘅信用卡";
//let str = "SGGRAND DING HOUSE 4GRAND DING HOUSE";
const REGEX_CHINESE = /[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff\uf900-\ufaff\uff66-\uff9f]/;
const hasChinese = str.match(REGEX_CHINESE);
if(hasChinese){
  alert("Found");
}
else{
  alert("Not Found");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM