JS分为日语字符串

时间:2018-03-19 16:24:21

标签: javascript arrays string validation split

我有一个带字符串验证的表单。字符串的验证必须包含至少两个单词。我使用的是split()方法

string.split(' ').length >= 2

但是,如果用户输入日语字符串ex:

  

公开文书

公開文書.split(' ').length的结果是1,该值对我的表单无效。但是,如果我将字符串从日语翻译成英语,我们会得到翻译:{{1​​}},它看起来像是表单的有效字符串。

有办法处理这种情况吗?我想让这些日语字符串有效。

2 个答案:

答案 0 :(得分:3)

简单地说,你要求用空格分割字符串。日语文本本身不包含空格。系统不关心翻译时是否包含空格。

对于日语,我们更关心的是是否有多个单词。如果您具体针对日语,我建议tiny-segmenter。例如:

var segmenter = new TinySegmenter()
var segs = segmenter.segment("公開文書") // Output [ '公開', '文書' ]
var num_words = segs.length >= 2 // true

请注意,这仅适用于日文文本。您需要为其他语言找到类似的解决方案,例如中文或韩文。

答案 1 :(得分:1)

如果您需要中文

,请尝试此操作

https://github.com/bluelovers/node-segment

var Segment = require('novel-segment');
var segment = new Segment();

var ret = segment.doSegment('公開文書');

console.log(ret.length); // => 2
console.log(ret);
{
    "w": "公開",
    "p": 4096,
    "f": 1254,
    "ps": "動詞 動語素",
    "pp": "0x1000",
    "_debug": {
        "index": 0,
        "ps_en": "v"
    }
},
{
    "w": "文書",
    "p": 1048576,
    "f": 6704,
    "ps": "名詞 名語素",
    "pp": "0x100000",
    "_debug": {
        "index": 1,
        "ps_en": "n"
    }
}