显示所有中国城市需要多少个汉字?

2024-01-08 12:51:26

显示所有中国城市需要多少个汉字呢?

需要3678个汉字,看看我怎么知道的。

第一步:先找到中国的所有城市的名称

去哪里找到中国的所有城市的名称呢?

进入中国天气网:http://www.weather.com.cn/

使用 F12 打开浏览器的调试面板,进入Network 页签,

然刷新页面,再过滤JS,最后找到city.js

image

然后右键city.js 另存为,将city.js下载下来

image

该js文件有 13705 行,手工一个个的统计使用了多少个汉字显然不现实。

So?

第二步:简单写个程序筛选出不重复的汉字

手工统计不现实,需要使用更高效的工具

做这种活肯定是程序最在行的了。

程序也非常的简单,关键是知道基本汉字的取值范围:\u4E00 - \u9FFF,这里包含20992个基本汉字

具体程序如下↓

import?java.io.*;
import?java.util.*;

public?class?RemoveDuplicateWords?{
????public?static?void?main(String[]?args)?{
????????String?inputFilePath?=?"/city.js";?//?替换为你的输入文本文件路径
????????String?outputFilePath?=?"/cityName.txt";?//?替换为你希望输出的新文本文件路径
????????//?Set?集合不重复保存
????????Set<String>?uniqueWords?=?new?HashSet<>();

????????try?(BufferedReader?br?=?new?BufferedReader(new?FileReader(inputFilePath)))?{
????????????String?line;
????????????while?((line?=?br.readLine())?!=?null)?{
????????????????for?(int?i?=?0;?i?<?line.length();?i++)?{
????????????????????char?charAt?=?line.charAt(i);
????????????????????//?在这里添加你的判断逻辑
????????????????????if(isChinese(charAt)){
????????????????????????System.out.println("汉字:?"?+?charAt);
????????????????????}
????????????????????else?{
????????????????????????System.out.println("非汉字:?"?+?charAt);
????????????????????????continue;
????????????????????}
????????????????????//?添加到集合中
????????????????????uniqueWords.add(String.valueOf(charAt));
????????????????}
????????????}
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????}

????????try?(BufferedWriter?bw?=?new?BufferedWriter(new?FileWriter(outputFilePath)))?{
????????????for?(String?entry?:?uniqueWords)?{?//?遍历所有值
????????????????bw.write(entry);?//?写入新文件
????????????}
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????}
????}
????//?基本汉字取值范围,这里包含20992个基本汉字
????public?static?boolean?isChinese(char?c)?{
????????return?c?>=?'\u4E00'?&&?c?<=?'\u9FFF';
????}
}

最终输出的文件内容如下,一共3678个汉字

image

里面一定有你和我都不认识的汉字,因为常用汉字是3500个。

中国之大,这一生也不可能走遍,但总会有你喜欢的城市烟火。

总结

编程语言是非常高效的工具,在现在和未来都将是不可替代的工具。在现在和未来也将不是程序员才学习的知识,而是所有人都应该去掌握的工具,不追求精通什么,只作为你趁手的工具。

image

软考中级--软件设计师毫无保留的备考分享

计算机算法设计与分析(第5版)

自己编写平滑加权轮询算法,实现反向代理集群服务的平滑分配

Java全栈学习路线、学习资源和面试题一条龙

更多优质文章,请关注WXgzh:Java全栈布道师

文章来源:https://blog.csdn.net/denlnyyr/article/details/135397652
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。