当定位被引入等式时,如何处理字符串长度约束?

时间:2014-03-27 22:24:41

标签: javascript web-applications localization internationalization

一旦有搜索输入。
它负责根据用户输入过滤表格中的数据 但是这个搜索输入很特别:除非输入最少3个字符,否则它不会做任何事情 不是因为它很懒惰,而是因为它没有意义。

一切都很好,直到一个新的和奇怪的(与英语相比)语言来到城镇 它是日本人,现在最小的字符串长度为3是愚蠢无用的。

我丢失了那个故事的最后几页。有人记得它是如何结束的吗?

2 个答案:

答案 0 :(得分:1)

我猜这主要取决于你从哪里获得最小长度变量。如果它是硬编码的,你可能最好使用动态国际化模块:

int.getMinStringLength(int.getCurrentLanguage())

要么有动态绑定框架,例如AngularJS,要么在用户更改语言时更新该模块。

现在,您可能希望使用分组属性(例如“详细”和“精简”)对支持的语言进行排序。

答案 1 :(得分:1)

为了解决问题,您显然需要确定用户的输入是否属于某些脚本。最明显的方法是使用Unicode Regular Expressions

var regexPattern = "[\\p{Katakana}\\p{Hiragana}\\p{Han}]+";

唯一的问题是,JavaScript不支持开箱即用的这种正则表达式。无论如何,你很幸运 - 有一个名为XRegExp的JS库,它的Scripts插件似乎正是你所需要的。现在,问题是,你是否想要为非日本或非中国用户至少需要三个字符,否则就要这样做 - 对于某些脚本(拉丁语,普通语,西里尔语,希腊语和希伯来语)至少需要三个字符,而允许在一个角色上搜索任何其他角色。我建议第二个解决方案:

if (XRegExp('[\\p{Latin}\\p{Common}\\p{Cyrillic}\\p{Greek}\\p{Hebrew}]+').test(input)) {
    // test for string length and call AJAX if the string is long enough
} else {
    // call AJAX search method
}

您可能希望预编译正则表达式以获得更好的性能,但基本上就是这样。