小编Dan*_* V.的帖子

使用localeCompare在Javascript中使用拼音进行中文排序?

我在这里面临着相当大的挑战.我用拼音来区分某些中文"表达".

问题:
我怎么能在Firefox中按拼音排序?
有没有办法在IE 9和10中正确排序?(它们也得到网站的支持)

例:

  1. 财经传讯公司
  2. 财经顾问
  3. 房地产及按揭

根据翻译机构的说法,这就是单词的排序顺序.翻译如下:

  1. 金融传播机构
  2. 财务顾问
  3. 房地产和抵押贷款

拉丁字母表中的代词:

  1. 蔡静川勋公司
  2. 蔡静谷文
  3. 方迪陈吉安

String.localeCompare: MDN Docs

根据我的理解,我将提供第二个参数,该String.localeCompare方法"告诉"按BCP 47格式拼音排序的方法应该是zh-CN-u-co-pinyin.

所以完整的代码应如下所示:

var arr = [ "??????", "????", "??????"];
console.dir(arr.sort(function(a, b){
    return a.localeCompare(b, [ "zh-CN-u-co-pinyin" ]); 
}));
Run Code Online (Sandbox Code Playgroud)

jsFiddle工作示例

我希望这能按照我在数组中输入的顺序登录控制表达式,但输出不同.

在FX 27上,订单是:3,1,2
在Chrome中33:1,2,3
在IE 11中:1,2,3

注意:

拼音是将汉字的普通话发音转录成拉丁字母的官方语音系统.

javascript sorting

13
推荐指数
2
解决办法
4135
查看次数

在Dart中解码HTML编码的文本

似乎Dart没有提供默认机制(或者至少我找不到它)来解码HTML转义实体.

我想做的是转换例如.Q&AQ&A.(这只是一个例子)

由于1.11.1版本,飞镖转换编码这些像这样.

从那里创建自定义转换器实现相当简单,但不会涵盖所有用例.如:如果<以十六进制值表示,该<怎么办?

有人有一些漂亮的解决方案

decoder dart

8
推荐指数
2
解决办法
1932
查看次数

如何处理强模式分析的隐式强制警告?

我在Web应用程序中常见的事情是从服务器请求资源并将其作为dart中的Map处理.

import 'dart:convert';

const String sampleJSON = '''
{
    "member": {
        "meaningOfLife": 42
    }
}
''';

Map<String, dynamic> getResource() {
  // do some magic
  return JSON.decode(sampleJSON);
}
Run Code Online (Sandbox Code Playgroud)

我假设JSON解码Map中的所有键都是字符串,但显然我不知道值的类型.在检查模式下,这工作得相当好.

以强模式分析上面的代码将告诉我: Unsound implicit cast from dynamic to Map<String, dynamic>

题:

处理此类投射警告的好策略是什么?

可疑选项1:

Map getResource() {
  // do some magic
  return JSON.decode(sampleJSON);
}
Run Code Online (Sandbox Code Playgroud)

以后这可能是个问题:Iterable<String> keys = getResource().keys会发出警告.

可疑选项2:

Map<String, dynamic> getResource() {
  // do some magic
  return new Map<String, dynamic>.from(JSON.decode(sampleJSON));
}
Run Code Online (Sandbox Code Playgroud)

它不会降低性能吗?我仍然会收到警告Map<String, dynamic> meaning = getResource()["member"];

感谢您的建议.

dart

3
推荐指数
1
解决办法
589
查看次数

标签 统计

dart ×2

decoder ×1

javascript ×1

sorting ×1