`
FlyAway2
  • 浏览: 111912 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

检查中文字符小程序

 
阅读更多

写各种java或jsp的时候,一不小心就会多写了一些中文的标点字符,特别是jsp中的javascript,里面出了错都没有提示,郁闷的要死。

 

心想要是有这么一个检查中文字符小程序就好了。网上找了很久,都没找到自己想要的。于是自己写:

 

注:主要是检查',' ,'。' ,'、',';','’','‘','”','“',':' 这些字符,不让它秘密的隐藏在jsp中

 

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


public class UnsupportedCharCheck{

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		try {
			test("D:/helloworld/index.jsp");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void test(String articleLoction) throws IOException {
		File article = new File(articleLoction);
		char[] unsupportedChars = { ',' ,'。' ,'、',';','’','‘','”','“',':'};//' '不能表示中文空格?那..
		Map unsupportedCharsAndLineNo = new HashMap();
		Map unsupportedCharsFound = new HashMap();
		int lineNum = 0;
		int commentedNum = 0;
		int multiCommentBegin = -1;//标注多行注释<!--的起始位置
		int multiCommentEnd = -1;//标注多行注释<!--的起始位置
		boolean mc = false;
		boolean problem_flag = false;
		BufferedReader bf = new BufferedReader(new FileReader(article));
		
		String lineStr = "";
		while((lineStr=bf.readLine())!=null){
			lineNum++;
			if(lineStr.startsWith("//"))continue;

			if(mc)
				if(((multiCommentEnd=lineStr.indexOf("-->")))==-1){
					continue;
				}else {
					lineStr = lineStr.substring(multiCommentEnd+3);
					mc = false;
				}
			
			while((multiCommentBegin=lineStr.indexOf("<!--"))!=-1){
				if(((multiCommentEnd=lineStr.indexOf("-->")))!=-1){					
					lineStr = lineStr.substring(0, multiCommentBegin)+lineStr.substring(multiCommentEnd+3);
					mc = false;
				}else {
					lineStr = lineStr.substring(0, multiCommentBegin);
					mc = true;
				}
			}
			
			if(mc)
				if(((multiCommentEnd=lineStr.indexOf("-->")))==-1){
					continue;
				}else {
					lineStr = lineStr.substring(multiCommentEnd+3);
					mc = false;
				}
			//System.out.println(lineStr);
			
			
			int commentBegin = 0; 
			String errStr = "";
			for(int i=0;i<lineStr.length();i++) {
				if(commentBegin==2)break;
				if(multiCommentBegin!=-1);
				char c = lineStr.charAt(i);
				if(c=='/'){
					commentBegin += 1;
					if(commentBegin == 2) {
						 commentedNum ++;
						 commentBegin = 0;
					}
					continue;
				}else if( commentBegin == 1){
					commentBegin = 0;
				}
				
				for(int j=0;j<unsupportedChars.length;j++) {
					if(c==unsupportedChars[j]) {
						if(errStr.length()==0) {
							errStr += c;
						}else {
							errStr += "|" + c;
						}
						
						if(!unsupportedCharsFound.containsKey(c)) {
							unsupportedCharsFound.put(c,lineNum);
							//System.out.println("FOUND UNSUPPORTED CHAR: '" +  c  +"' AT LINE " +lineNum);
						}else{
							//System.out.println("FOUND UNSUPPORTED CHAR: '" +  c  +"' AT LINE " +lineNum);
						}
						unsupportedCharsAndLineNo.put(lineNum, c);
						break;
					}
				}
			}
			if(errStr.length()!=0) {
				problem_flag = true;
				System.out.println("FOUND UNSUPPORTED CHARS: " +  errStr  +" AT LINE " +lineNum);
			}
		}
		if(!problem_flag)System.out.println("CONGRATULATIONS!  NO UNSUPPORTED CHARS FOUND~~");
		
		
	}
}

 

分享到:
评论

相关推荐

    aix_6.1_安装中文字符

    AIX 6.1 安装中文字符集的优点是可以满足用户在使用 AIX 6.1 操作系统时的需求,例如在某些应用程序中需要使用中文字符集。同时,安装中文字符集也可以提高 AIX 6.1 操作系统的可用性和可读性。 需要注意的是,在...

    字符分割程序

    字符分割程序是信息技术领域中文本处理的一个重要环节,主要用于将连续的字符序列分解为独立的单元,以便于后续的分析和处理。这个过程在许多应用中都至关重要,比如光学字符识别(OCR)、自然语言处理(NLP)以及...

    获取中文字符串长度的函数

    为了计算中文字符串的长度,我们需要遍历字符串的每一个字节,检查它们是否构成一个完整的中文字符。 在Unicode编码中,中文字符通常以连续的两个字节的形式出现,这两个字节的最高位都是1,而英文字符的最高位是0...

    检查字符串中字符出现的次数(包含汉字)

    ### 检查字符串中字符出现的次数(包含汉字) #### 知识点解析 本文将根据提供的代码示例,详细解析如何在Java程序中统计一个字符串中各个字符(包括汉字)出现的次数。该方法适用于任何包含字符的字符串,无论...

    Linux Opencv在图像上写中文字符

    7. **运行示例**:最后,你可以创建一个简单的程序,读取图像,使用上述步骤在图像上添加中文字符,然后保存或显示结果。 以上就是利用Linux、OpenCV和FreeType在图像上写入中文字符的基本流程。这个过程可能涉及到...

    URL编码解码小程序

    总的来说,URL编码解码小程序是一个实用的工具,可以帮助用户方便地处理含有非ASCII字符或特殊字符的URL,提高他们在网络开发和数据处理中的效率。理解URL编码的工作原理和应用场景,对于理解互联网通信的基础和解决...

    解析文件中的中文字符串

    在IT行业中,处理文本数据,特别是涉及多语言版本时,经常需要解析文件中的特定内容,如中文字符串。这里,我们关注的是如何从Java文件、C#(cs)文件以及Designer文件中提取中文字符和控件信息。这个过程涉及到编程...

    微信小程序车牌键盘录入demo

    在微信小程序中,虽然系统默认的键盘可能无法满足特定场景下的录入需求,如车牌号输入,因为车牌号通常由汉字、字母和数字组成,需要特定顺序和格式。因此,开发者需要创建一个自定义键盘组件,该组件包含符合车牌...

    查看oracle dmp字符集的小工具

    "查看oracle dmp字符集的小工具"就是针对这一需求开发的实用程序。 该工具的特色在于它的绿色小巧,无需安装即可运行,减少了对系统资源的影响。同时,它能够处理大于10KB的DMP文件,这表明其对于大型数据库的字符...

    c++车牌字符切割识别程序

    模板匹配适用于字符库较小的场景,而深度学习方法在大量数据集上训练后能实现较高的识别准确率。 6. C++编程:本程序使用C++语言编写,这是系统级编程的常用语言,效率高且功能强大。开发时可能需要用到OpenCV库,...

    微信小程序-首字母排序选择功能开发.zip

    在微信小程序的开发中,实现首字母排序选择功能是一项常见的需求,这通常涉及到用户界面的友好性和数据管理的效率。这个压缩包“微信小程序-首字母排序选择功能开发.zip”包含了一个小程序模板代码,用于帮助开发者...

    delphi字符串汉字统计小例子

    在这个"delphi字符串汉字统计小例子"中,我们探讨的核心知识点是如何在Delphi程序中统计一个字符串中汉字的数量,这对于短信软件开发或者其他涉及到文本处理的应用非常实用。下面我们将深入讨论相关的编程技术和思路...

    微信小程序md5.js 支持中文~

    描述中的关键词“小程序中文”、“小程序hash”和“小程序哈希”进一步强调了这个`md5.js`库的功能,即它能在微信小程序中处理中文字符串,并生成其对应的哈希值。哈希(Hash)是数据的一种快速索引方式,通过哈希...

    微信小程序语言切换,各语言之间相互切换英汉、维汉(维语转汉语 - 汉语转维语)等!

    当用户选择或系统自动检测到语言变更时,可以调用微信小程序的`wx.getLocale()`方法获取当前语言环境,然后使用`wx.getStorageSync`或`wx.setStorageSync`来读写本地存储,保存用户的语言选择。 在页面或组件的生命...

    carnumber_input_微信小程序_车牌_

    在IT行业中,微信小程序是一种轻量级的应用开发平台,它允许开发者快速构建可以在微信内运行的应用程序,无需安装即可使用,极大地提升了用户体验。本项目"carnumber_input_微信小程序_车牌_"聚焦于创建一个特定的...

    微信小程序车牌号输入功能页demo完整源码下载.zip

    微信小程序是一种轻量级的应用开发平台,由腾讯公司推出,主要应用于移动端,提供丰富的API接口和组件,使得开发者可以快速构建具有原生体验的应用。在车牌号输入功能页的开发中,微信小程序提供了多种技术手段来...

    微信-汉字拼音首字母排序选择.rar

    微信小程序-汉字拼音首字母排序选择,包括了一个微信小程序富文本解析函数库,收录字符的Unicode编码范围为19968至40869,汉字拼音首字母列表 本列表包含了20902个汉字,用于配合 ToChineseSpell,改动为判定输入数组...

    字符分割算法论文,中文的

    - **定义**:矩形窗口是指在图像上滑动的小矩形框,用于检测字符区域。 - **设计思路**:通过数学推导,设计一种利用卷积和微分运算的矩形窗口检测算法。 - **实现原理**:该算法利用图像梯度信息,通过卷积操作检测...

    java正则表达式判断密码是否包含大小写、数字、特殊字符

    随机产生字符串,字符串中的字符只能由特殊字符(&@#$%*),大写字母(A-Z),小写字母(a-z)以及数字(0-9)组成,且每种字符至少出现一次。这样产生字符串的方式可以应用到如下场景,比如,我们有一个应用就是添加用户完毕...

    C语言100经典小程序

    ### C语言100经典小程序知识点解析 #### 第1题:成绩分析函数 ...以上代码片段和解析涵盖了题目要求的五个经典C语言小程序的知识点,包括数组操作、条件判断、循环结构、字符串处理以及素数判定等。

Global site tag (gtag.js) - Google Analytics