首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在没有Android ICU的ChoiceFormat中使用"{0,ordinal}“

在没有Android ICU的ChoiceFormat中使用"{0,ordinal}",可以通过以下步骤实现:

  1. 导入相关的Java类库:在代码中导入java.text.MessageFormat类库。
  2. 创建MessageFormat对象:使用MessageFormat类的静态方法format()创建一个MessageFormat对象,并传入需要格式化的字符串作为参数。
  3. 设置格式化模式:通过调用MessageFormat对象的setFormatByArgumentIndex()方法,设置格式化模式为"{0,ordinal}"。其中,"{0}"表示需要格式化的参数的索引,"ordinal"表示使用序数形式进行格式化。
  4. 格式化字符串:使用MessageFormat对象的format()方法,传入需要格式化的参数值作为参数,即可得到格式化后的字符串。

以下是一个示例代码:

代码语言:java
复制
import java.text.MessageFormat;

public class Main {
    public static void main(String[] args) {
        String pattern = "The {0,ordinal} item";
        MessageFormat messageFormat = new MessageFormat(pattern);
        messageFormat.setFormatByArgumentIndex(0, new ChoiceFormat("1=st|2=nd|3=rd|4=th"));
        
        int itemNumber = 1;
        String formattedString = messageFormat.format(new Object[]{itemNumber});
        System.out.println(formattedString);
    }
}

输出结果为:"The 1st item"。

在这个例子中,我们使用了MessageFormat类来格式化字符串,通过setFormatByArgumentIndex()方法设置了格式化模式为"{0,ordinal}",然后通过format()方法传入需要格式化的参数值,即可得到格式化后的字符串。在格式化模式中,我们使用了ChoiceFormat来实现序数的格式化,其中"1=st|2=nd|3=rd|4=th"表示了1、2、3、4分别对应的序数形式。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 21天自制chromium -- cc篇

    好吧,我承认有点标题党了。 不过从这篇开始, 我们来点干货,如何从blink打造一个可以实用的浏览器。 chromium从零几年搞到现在,已经完全变成一个无所不包的庞然大物。 如果你只是想要一个能浏览网页的组件,方便嵌入到自己的程序里,或者想用网页来做界面--例如QQ音乐,网易云音乐那样, chromium的那堆多进程、mojo通信、Chrome Apps 框架、Aura Shell、增量升级系统、Chrome Extensions 、headless模式、P2P 通信库,native_client、pdf、ppapi、沙盒机制等等一堆乱七八糟你听都没听过的东西都不会需要。然而只要用了chromium的内核,这堆东西除了占用系统资源外,你还不得不都打包带上。 这时候你就会有个强烈的想法,我不需要这堆乱七八糟的功能,只要能浏览大部分网页的排版渲染组件可以么。 答案是肯定的。webkit内核就是为此而生。 但这里有个问题,chromium虽然当年是使用webkit内核,但自从和苹果分道扬镳后,把webkit改名成blink不说,代码和结构完全是面目全非,而且最重要的是blink已经不是像webkit那样是一个独立的组件了,而是chromium那堆几百个第三方库里一个小小的组件,所有外部设施都依赖于chromium的其他组件了。 我们来看看blink目前需要依赖哪些组件: 1,cc层(chromium 合成层,实现网页绘制并贴到屏幕上等操作。这个是最麻烦的,以后专门开一篇来讲如何自制) 2,base库(chromium基础库,类似字符串操作等一系列c++基础库) 3,各种和操作系统打交道的接口,例如菜单、文件读写、窗口操作等。这堆东西可以认为是要实现third_party/WebKit/public/platform/Platform.h里的一系列虚函数。 4,如果你不是打算卖到清真地区,通常icu你也不会想要。这是个占用体积很大的毒瘤,一个数据文件就10几M,作为轻量级内核,你肯定不想带。 5,网络层。 6,v8(js引擎) 7,skia(底层绘图库) 那我们如何在尽量少的使用chromium代码基础上,实现上诉一堆功能和组件呢? 这是目前我的解决方案: 1,cc层:我放弃了原版chromium cc层,自己完全重写了一遍。这个工作量相当巨大,如果你不是和我一样这么闲,建议直接使用原版cc。 2,base库:在chromium四十几版的时候,blink几乎不依赖base。然而高版本把wtf库里的大量实现,直接使用base库。所以如果你是从高版本blink开始撸,可以直接扣取低版本blink里的wtf来实现base相关依赖。此处工作量也甚大。 3,各种和操作系统打交道的接口:这块其实没有难度,就是有着巨大的工作量。一个个补齐就好。 4,icu:直接使用系统相关的接口。例如文字编码转换之类的,windouws就有现成的api。其他高级icu api例如断行断句,如果你只打算运行在中英文地区,那自己实现也很简单。 只有阿拉伯文、天成文、藏文这些小众语言那需要那么复杂的规则。 5,网络层:直接用webkit里的现成代码吧。 6,v8:直接使用chromium原始代码即可。毕竟这玩意不依赖其他任何组件。 7,skia:直接使用chromium原始代码即可。毕竟这玩意不依赖其他任何组件。 说到这里,大家肯定有个疑问:既然这么多都用webkit,那为啥我们直接拿webkit过来不就行了。 其实是可以的。webkit发展到今天,已经完全和chromium分开发展了(当年有一阵子谷歌的人也一直在给webkit提代码,后面苹果把他们都踢走了)。而且webkit就是个完整内核,你用来做轻量级组件正合适。但我有几个原因还是放弃了: 1,webkit对标准的支持还是有点偏差。例如web组件标准,css gird等等。 2,webkit的web inspect做的很烂,完全没blink好用。 3,webkit现在也很大了,我编译出来不算icu,也有26M多。作为一个有追求的程序员,我希望这个大小是10M左右。 4,最重要的,webkit的js引擎是javascriptcore。这样实现的组件就无法兼容市面上那堆v8造出来的轮子。例如electron、nwjs、nodejs都是用v8。 5,还有个小点就是chromium更新非常快,跟着谷歌大佬走感觉更有保障些,尤其是碰到各种莫名其妙的bug,还可以查chromium的更新记录。

    04

    2023年CVE数据回顾

    按月划分的CVE 月CVEs 百分比一月23378.1二月21237.3三月25178.7四月23308.1五月24188.4六月23918.3七月23078.0八月24788.6九月21527.4十月26909.3十一月24838.6十二月26769.3 按星期几划分的CVE 天CVEs 百分比周一500517.3周二643822.3周三589520.4周四506417.5周五459715.9周六10063.5周日8973.1 十大CVE发布日 天CVEs2023-01-263482023-11-143302023-10-253272023-09-273102023-12-152892023-07-112752023-10-102542023-08-082532023-05-092512023-04-11236 CVE增长 与 2017 年以来的每一年一样,我们发布的 CVE 数量破纪录,达到 28,902 个。比 2022 年增长了 15.23% 。这也意味着 所有已发布的 CVE 中有 13.18% 是在去年发布的。 CVSS 通用漏洞评分系统 (CVSS)提供 了一种捕获漏洞主要特征并生成 0.0 到 10.0 之间的数字分数的方法,以反映其严重性。今年CVSS平均分是 7.12。 https://www.first.org/cvss/ 今年,36 个 CVE 获得了“满分” 10.0 分。 https://github.com/jgamblin/CVEReview/blob/main/2023_CVSS.ipynb CVE-2023-21928 的已发布 CVSS 分数最低为 1.8。 https://nvd.nist.gov/vuln/detail/CVE-2023-21928 CPE 通用平台枚举 (CPE) 是信息技术系统、软件和软件包的结构化命名方案,可帮助识别 CVE 中识别的易受攻击的软件。 https://nvd.nist.gov/products/cpe 今年,CVE中发现了 3,119 个独特的 CPE。最常见的是 cpe:2.3:o:google:android:12.0:*:*:*:*:*:*:* 应用于 547 个 CVE。 CVE-2023-44183 是 Juniper Junos OS 漏洞,是拥有最多 CPE 的 CVE,具有 240 个 独特的易受攻击的配置。 https://nvd.nist.gov/vuln/detail/CVE-2023-44183 CNA CVE 编号机构 (CNA) 是由 CVE 计划授权的软件供应商、开源项目、协调中心、错误赏金服务提供商、托管服务和研究小组,为漏洞分配 CVE ID 并在其特定覆盖范围内发布 CVE 记录。 https://www.cve.org/ProgramOrganization/CNAs 如今, CNA 数量已达 346 个。今年,其中 250 个 CNA 至少发布了一份 CVE。 https://www.cve.org/PartnerInformation/ListofPartners 去年排名前 5 的 CNA 分别是: Patchstack:https://patchstack.com/category/security-advisories/ VulDB:https://vuldb.com/?cna.recent Github:https://github.com/advisories Microsoft:https://www.microsoft.com/en-us/msrc/technical-security-notifications WPScan:https://wpscan.com/wordpresses 今年排名前五的 CNA 中有四个(不包括 Microsoft)专门用于报告开源项目(VulDB 和 Github)或 WordPress 插件(Patchstack 和 WPScan)的 CVE。这四个 CNA 发布了 6,778 篇文章,占今年所有 CVES 的 24.12% 。 CWE CWE 是社区开发的软件和硬件弱点类型列表。它是一种通用语言,是安全工具的衡量标准,也是弱点识别、缓解和预防工作的基线。 https://cwe.mitre.org/ 今年共有 1,332 个 CWE,其中 237 个被分配到 CVE。CWE-79 是分配次数最多的 CWE,被分配了 4,474 次,占所有 CVE 的 15.48% 。NVD 未分配 CWE 的次数为 4,113 次,占所有 CVE 的 14.23% 。 https://cwe.mitre.org/data/index.html https://cwe.mitre.org/dat

    01
    领券