none
關於字串裡如何 判斷是否包含日文 RRS feed

解答

所有回覆

  • BIG5 GB2312繁簡編碼快篩

    參考看看黑暗執行緒的分析方法,看能不能改寫為日文版。


    理直氣和,切記。

    推廣

    微軟免費中文影音線上教學網站

    個人

    2014年5月26日 下午 02:20
    • 已標示為解答 阿刃 2014年5月29日 上午 04:51
    2014年5月27日 上午 02:47
  • 如果是要採用 Regular Expressions 來處理的話,可參考MSDN的 規則運算式中的字元類別 裡 \p{...} 的用法。

    理直氣和,切記。

    推廣

    微軟免費中文影音線上教學網站

    個人

    • 已標示為解答 阿刃 2014年5月29日 上午 04:51
    2014年5月27日 上午 06:24
  •  string pattern = @"\b(\p{IsHiragana}+(\s)?)+\p{L}\s(\p{IsHiragana}+(\s)?)+";
            string input = "菅義偉官房長官は28日の衆院予算委員会で、慰安婦の問題をめぐる河野談話について、「(元慰安婦による)証言の事実関係を洗い直すことは不可能だ」として、「政府として見直したり、新たな談話を出したりすることは考えていない」と改めて表明した。";
    
            Console.WriteLine(Regex.IsMatch(input, pattern));        
            Console.ReadLine();

    DearKKBruce

    參考了 您給我的Regex 可是我回傳出來的值是False

    請問是我的正則表達式部分寫錯了嗎?

    2014年5月29日 上午 02:48
  • OK了 謝謝你們
    2014年5月29日 上午 04:51
  • 您好,
    您可以參考tihs大大的URL,只判斷(平仮及片仮)的區間,

    private static IEnumerable<char> GetCharsInRange(string text, int min, int max)
    {
    	return text.Where(e => e >= min && e <= max);
    }
    
    public static bool IsContainsJapanese(string text)
    {
    	//var romaji = GetCharsInRange(text, 0x0020, 0x007E).Any();
    	var hiragana = GetCharsInRange(text, 0x3040, 0x309F).Any(); //平仮名
    	var katakana = GetCharsInRange(text, 0x30A0, 0x30FF).Any(); //片仮名
    	//var kanji = GetCharsInRange(text, 0x4E00, 0x9FBF).Any();
    	return  hiragana || katakana  ;
    }
    
    //
    string s1 = @"菅義偉官房長官は28日の衆院予算委員会で、慰安婦の問題をめぐる河野談話について";
    Console.WriteLine("{0}:{1}", s1, IsContainsJapanese(s1));
    
    string s2 = @"中文字";
    Console.WriteLine("{0}:{1}", s2, IsContainsJapanese(s2));
    
    string s3 = @"English ";
    Console.WriteLine("{0}:{1}", s3, IsContainsJapanese(s3));
    
    string s4 = @"で中文字で";
    Console.WriteLine("{0}:{1}", s4, IsContainsJapanese(s4));
    
    string s5 = @"test堃中文";
    Console.WriteLine("{0}:{1}", s5, IsContainsJapanese(s5));


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2014年5月29日 上午 05:35
  • 如果你願意,也可以分享給版上的所有人"你的解決方案",相信這樣的互動是最好的,助你,也助其他有同樣需求的人 ^_^

    理直氣和,切記。

    推廣

    微軟免費中文影音線上教學網站

    個人

    2014年5月30日 上午 01:32
  • string pattern = @"\b(\p{IsHiragana}+(\s)?)+\p{L}";
            string input = "菅義偉官房長官は28日の衆院予算委員会で、慰安婦の問題をめぐる河野談話について、「(元慰安婦による)証言の事実関係を洗い直すことは不可能だ」として、「政府として見直したり、新たな談話を出したりすることは考えていない」と改めて表明した。";
    
            Console.WriteLine(Regex.IsMatch(input, pattern));        
            Console.ReadLine();

    不過我這部分只能判斷平假名部分

    2014年5月30日 上午 01:35