我有一个带字符串验证的表单。字符串的验证必须包含至少两个单词。我使用的是split()
方法
string.split(' ').length >= 2
但是,如果用户输入日语字符串ex:
公开文书
公開文書.split(' ').length
的结果是1
,该值对我的表单无效。但是,如果我将字符串从日语翻译成英语,我们会得到翻译:{{1}},它看起来像是表单的有效字符串。
有办法处理这种情况吗?我想让这些日语字符串有效。
答案 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"
}
}