Android:验证半角日文字符

Posted

技术标签:

【中文标题】Android:验证半角日文字符【英文标题】:Android : Validate half-width Japanese character 【发布时间】:2021-02-12 22:42:27 【问题描述】:

这个问题可能已经被问过好几次了,但我没有找到正确的答案,所以我发布了这个问题。我想要做的是验证在编辑文本字段中输入的日文文本只允许半角日文字符。我只想在用户输入文本并点击某个操作按钮后检查验证。

【问题讨论】:

可能的Unicode点范围0xFF61 .. 0xFFDC? 好的,那我该怎么做呢?请帮帮我。 Pattern halfwidths = Pattern.compile("[\uFF61-\uFFDC]"); 像this answer 和来自java.util.regex.Pattern official docs 的典型调用序列?可能取决于 java 版本... @JosefZ 请进一步向我解释我无法理解。我希望用户输入字符串文本来验证它是否是半角日文字符 @fr3ddie 对不起先生,我解决了我自己面临的问题。社区对你来说似乎已经超过 25 岁了。 【参考方案1】:

好的,所以我遇到了很多解决方案,这个对我有用。 基本上,我有一个日语半角验证正则表达式并将其与我的字符串进行比较。

val halfWidthRegex = "^[ァ-ン゙゚]+\\s?[ァ-ン゙゚]+$"

if(myText?.matches(halfWidthRegex.toRegex()))
  // Valid halfwidth text
else // Invalid halfwidth text.

【讨论】:

【参考方案2】:

我创建了方法验证输入的字符是否为half-width kana

public boolean validate(String c) 
    Pattern pattern = Pattern.compile("[\uff61-\uff9f]");
    return pattern.matcher(c).matches();

我知道您要检查的是仅由半角假名组成的书面文本,是吗?为此,在您单击验证的按钮的onClick() 中,编写如下内容:

for (int i = 0; i < textToValidate.length(); i++) 
    if (validate(textToValidate.charAt(i))) 
        continue;
     else 
        System.out.println("Text wasn't written in half-width kana.");
        return;
    

System.out.println("Text was written in half-width kana.");

如果我的回答对你有帮助,请告诉我。 ;)

【讨论】:

以上是关于Android:验证半角日文字符的主要内容,如果未能解决你的问题,请参考以下文章

js对全角与半角的验证,相互转化以及介绍

Android 13 新的换行策略和针对日文的优化

android textview自动换行排列错乱问题及解决

android textview自动换行排列错乱问题及解决

Android ndk log unicode(宽字符)

日文汉字转假名