显示所有中国城市需要多少个汉字?
显示所有中国城市需要多少个汉字呢?
需要1226个汉字,看看我怎么知道的。
第一步:先找到中国的所有城市的名称
去哪里找到中国的所有城市的名称呢?
进入中国天气网:http://www.weather.com.cn/
使用 F12 打开浏览器的调试面板,进入Network 页签,
然刷新页面,再过滤JS,最后找到city.js
然后右键city.js 另存为,将city.js下载下来
该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';
}
}
最终输出的文件内容如下,一共1226个汉字
里面一定有你和我都不认识的汉字。
中国之大,这一生也不可能走遍,但总会有你喜欢的城市烟火。
总结
编程语言是非常高效的工具,在现在和未来都将是不可替代的工具。在现在和未来也将不是程序员才学习的知识,而是所有人都应该去掌握的工具,不追求精通什么,只作为你趁手的工具。
更多优质文章,请关注WX公众号:Java全栈布道师