设计函数,输入为一个字符串,里面包含中文、英文、数字等字符,编码为GBK。中文字符的编码规则假定为:双字节组成,高字节大于0x80,低字节任意。
a)用常用语言编写函数,实现功能为:按顺序提取输入文本中中文字符,形成新的文本串返回调用者。
b)如果调用者又是希望输入串的全中文内容,有时希望得到英文内容,那么函数应如何设计
c)如果调用者希望获取输入串中包含中文、英文和数字这三种字符中的一种或者多种需求不定时,函数应如何设计
import java.util.*;
interface GetData{
public void getChar(String str);
}
class GetChi implements GetData{
public void getChar(String str){
byte[] bstr=str.getBytes();
String ret="";
int index=0;
for(int i=0;i<bstr.length;i++){
if(bstr[i]<0){
i++;
char c=str.charAt(index);
ret=ret+String.valueOf(c);
}
index++;
}
System.out.println("中文字符:"+ret);
}
}
class GetEng implements GetData{
public void getChar(String str){
byte[] bstr=str.getBytes();
String ret="";
int index=0;
for(int i=0;i<bstr.length;i++){
if((bstr[i]>=97 && bstr[i]<=122 )||(bstr[i]>=65 && bstr[i]<=90)){
ret=ret+String.valueOf(str.charAt(index));
}else if(bstr[i]<0){
i++;
}
index++;
}
System.out.println("英文字符:"+ret);
}
}
class GetDigit implements GetData{
public void getChar(String str){
byte[] bstr=str.getBytes();
String ret="";
int index=0;
for(int i=0;i<bstr.length;i++){
if(Character.isDigit(bstr[i])){
ret=ret+String.valueOf(str.charAt(index));
}else if(bstr[i]<0){
i++;
}
index++;
}
System.out.println("数字字符:"+ret);
}
}
class Composite implements GetData{
List<GetData> list;
public Composite(){
list=new ArrayList<GetData>();
}
public void getChar(String str){
Iterator it=list.iterator();
while(it.hasNext()){
GetData g=(GetData)it.next();
g.getChar(str);
}
}
public void addTask(GetData g){
list.add(g);
}
}
public class TestGetData{
public static void main(String[] args){
GetData g1=new GetChi();
GetData g2=new GetEng();
GetData g3=new GetDigit();
GetData gg=new Composite();
gc.addTask(g1);
gc.addTask(g2);
gg.getChar("abc123黄老师");
}
}
分享到:
相关推荐
很多人喜欢用CString 或std:string,但是他们的缺点是不能完成汉字各种类型之间的转换,提供三种类库ascString,ucsString,utfString以及工具utfCount,utf8_ucs2_t,tcf8_ucs4_t类库,用于各种字符串之间的直接转换`...
director正则表达式插件--强大的字符串匹配工具 demo, 正则表达式功能很强大,匹配字符串很容易,现在,在director中借助这款插件,也可以实现正式表达式的功能了,lingo处理字符串更加容易。
java中文字符处理 1. 判断字符串是否全为汉字 2. 提取字符串中的汉字 3. 判断字符串中是否含有汉字 4. 获取字符串中汉字的个数 java一般的中文判断都是利用正则表达式
从DLL收读取字符串时遇到中文乱码,这里总结一下C#收取字符串时的处理。 C/C++字符串一般通过char* 或wchar_t*来表示,char*表示的是ANSCII字符串, wchar_t*表示Unicode字符串,Unicode字符串在C/C++中一个...
--提取中文 --3.2 从字符串中取固定数量的字段 --3.3 关于字符串拆分 --3.3.3.游标循环法: --SQL2000/2005字符串拆分为列表通用函数 --SQL2005以上版本可以结合apply进行拆分列值 --4、FOR XML PATH 语句的应用 --5...
不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);
DB2字符串处理 字符串处理 db2 函数
常用的文本处理方法,比如过滤关键词。文本编码。...检测含中文字符串实际长度。截断字符串,如果str 的长度超过 need,则提取 str 的前 need 个字符,并在尾部加 “...”。将字符串中的html代码去掉。
10、PutGB1616 --------------------显示16*16汉字 11、LCD_PutString --------------------显示字符串 12、Show_RGB -----------------------显示RGB颜色 13、show_photo--------------------------显示图片 14、...
<?... /* ... * * This library is free software; you can redistribute it and/or modify it ... * under the terms of the (at your ...用在网页上可以统一页面显示中文简体繁体及其它语言
结巴分词可以处理中文、英文和数字混合的文件。 ——你可以按照上面的教程直接进行训练,而无需下载附件。当然,下载后评价一下,也可以回收你的1分。 由于csdn的文件大小限制,只能将用到的软件都删除了,请自行...
西门子TP1200触摸屏不能显示汉字和摄氏度符号,中文字符显示异常的处理对策
英文字符 汉字识别源代码(图像处理) 汉字识别源代码(图像处理)汉字识别源代码(图像处理)
计算字符串中中文个数,判断是否含有中文,以及包含中文的字符串长度等问题
机器视觉字符识别项目实战,从图像采集到识别完成 ,输出结果一整个的流程处理!机器视觉字符识别项目实战,从图像采集到识别完成 ,输出结果一整个的流程处理!机器视觉字符识别项目实战,从图像采集到识别完成 ,...
Linux环境,利用Opencv freetype在图像上写中文字符,含字体文件、源码、CMakeLists配置
嵌入式系统中QCAD中文字符处理方法分析与改进,陈盈贵,鄢萍,QCAD采用笔划字符处理和显示图形中的字符。本文在分析了笔划字符处理方法的基础上,针对该方法处理中文字符占用系统资源大的问题�
1.删除字符 2.去空格 3.去除所有空格和特殊字符 4.判断邮箱 5.字符串集合转字符串 6.只保留汉字 7.关键词前后是否包含英文字母 8.去除字符串中的附件 9.获取下标单个位置和所有位置
CString类在多字节字符集中处理中文字符串效果不太好,比如GetLength等函数得不到正确的结果,我继承CString类实现了一个可以处理中文的字符串处理类,解决了以上问题。在使用中可以完全替代CString类。
在做Labview和tcp通讯的时候,需要发送中文字符串,找了会相关资料,竟然找到了labview提供的现成的字符串到utf8相互转换的vi,整理了一下分享出来,2014环境下目前测试可以直接使用。原文...