`
wu2004
  • 浏览: 8765 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

中文截取全角处理

阅读更多
如果一个字串中含有中文和字母,笨的方法还是有一个,对所有的进行全角处理,如a一位转成2位,那样取值截取就不会有什么问题了,我暂时上传一个笨的程序,大家看了以后不要笑我啊。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


/*打印时对字符转换   wuhongxing*/
void HvpsConvertChar(const char smsg,char * ret_msg)
{
	switch (smsg)
	{
	case '0':
		strcpy(ret_msg,"0");
		break;
	case '1':
		strcpy(ret_msg,"1");
		break;	
	case '2':
		strcpy(ret_msg,"2");
		break;
	case '3':
		strcpy(ret_msg,"3");
		break;	
	case '4':
		strcpy(ret_msg,"4");
		break;
	case '5':
		strcpy(ret_msg,"5");
		break;	
	case '6':
		strcpy(ret_msg,"6");
		break;
	case '7':
		strcpy(ret_msg,"7");
		break;	
	case '8':
		strcpy(ret_msg,"8");
		break;
	case '9':
		strcpy(ret_msg,"9");
		break;	
	case 'a':
		strcpy(ret_msg,"a");
		break;
	case 'b':
		strcpy(ret_msg,"b");
		break;	
	case 'c':
		strcpy(ret_msg,"c");
		break;
	case 'd':
		strcpy(ret_msg,"d");
		break;	
	case 'e':
		strcpy(ret_msg,"e");
		break;
	case 'f':
		strcpy(ret_msg,"f");
		break;
	case 'g':
		strcpy(ret_msg,"g");
		break;	
	case 'h':
		strcpy(ret_msg,"h");
		break;
	case 'i':
		strcpy(ret_msg,"i");
		break;	
	case 'j':
		strcpy(ret_msg,"j");
		break;
	case 'k':
		strcpy(ret_msg,"k");
		break;	
	case 'l':
		strcpy(ret_msg,"l");
		break;
	case 'm':
		strcpy(ret_msg,"m");
		break;	
	case 'n':
		strcpy(ret_msg,"n");
		break;
	case 'o':
		strcpy(ret_msg,"o");
		break;	
	case 'p':
		strcpy(ret_msg,"p");
		break;
	case 'q':
		strcpy(ret_msg,"q");
		break;	
	case 'r':
		strcpy(ret_msg,"r");
		break;
	case 's':
		strcpy(ret_msg,"s");
		break;	
	case 't':
		strcpy(ret_msg,"t");
		break;
	case 'u':
		strcpy(ret_msg,"u");
		break;	
	case 'v':
		strcpy(ret_msg,"v");
		break;
	case 'w':
		strcpy(ret_msg,"w");
		break;	
	case 'x':
		strcpy(ret_msg,"x");
		break;
	case 'y':
		strcpy(ret_msg,"y");
		break;	
	case 'z':
		strcpy(ret_msg,"z");
		break;
	case 'A':
		strcpy(ret_msg,"A");
		break;
	case 'B':
		strcpy(ret_msg,"B");
		break;	
	case 'C':
		strcpy(ret_msg,"C");
		break;
	case 'D':
		strcpy(ret_msg,"D");
		break;	
	case 'E':
		strcpy(ret_msg,"E");
		break;
	case 'F':
		strcpy(ret_msg,"F");
		break;
	case 'G':
		strcpy(ret_msg,"G");
		break;	
	case 'H':
		strcpy(ret_msg,"H");
		break;
	case 'I':
		strcpy(ret_msg,"I");
		break;	
	case 'J':
		strcpy(ret_msg,"J");
		break;
	case 'K':
		strcpy(ret_msg,"K");
		break;	
	case 'L':
		strcpy(ret_msg,"L");
		break;
	case 'M':
		strcpy(ret_msg,"M");
		break;	
	case 'N':
		strcpy(ret_msg,"N");
		break;
	case 'O':
		strcpy(ret_msg,"O");
		break;	
	case 'P':
		strcpy(ret_msg,"P");
		break;
	case 'Q':
		strcpy(ret_msg,"Q");
		break;	
	case 'R':
		strcpy(ret_msg,"R");
		break;
	case 'S':
		strcpy(ret_msg,"S");
		break;	
	case 'T':
		strcpy(ret_msg,"T");
		break;
	case 'U':
		strcpy(ret_msg,"U");
		break;	
	case 'V':
		strcpy(ret_msg,"V");
		break;
	case 'W':
		strcpy(ret_msg,"W");
		break;	
	case 'X':
		strcpy(ret_msg,"X");
		break;
	case 'Y':
		strcpy(ret_msg,"Y");
		break;	
	case 'Z':
		strcpy(ret_msg,"Z");
		break;
	case ',':
		strcpy(ret_msg,",");
		break;
	case '.':
		strcpy(ret_msg,"。");
		break;	
	case '/':
		strcpy(ret_msg,"/");
		break;
	case ' ':
		break;	
	case '<':
		strcpy(ret_msg,"<");
		break;
	case '>':
		strcpy(ret_msg,">");
		break;
	case '?':
		strcpy(ret_msg,"?");
		break;	
	case '\\':
		strcpy(ret_msg,"\");
		break;
	case '|':
		strcpy(ret_msg,"|");
		break;	
	case ':':
		strcpy(ret_msg,":");
		break;
	case ';':
		strcpy(ret_msg,";");
		break;	
	case '[':
		strcpy(ret_msg,"[");
		break;
	case ']':
		strcpy(ret_msg,"]");
		break;	
	case '{':
		strcpy(ret_msg,"{");
		break;
	case '}':
		strcpy(ret_msg,"}");
		break;	
	case '`':
		strcpy(ret_msg,"`");
		break;
	case '~':
		strcpy(ret_msg,"~");
		break;	
	case '!':
		strcpy(ret_msg,"!");
		break;
	case '@':
		strcpy(ret_msg,"@");
		break;	
	case '#':
		strcpy(ret_msg,"#");
		break;
	case '$':
		strcpy(ret_msg,"¥");
		break;	
	case '%':
		strcpy(ret_msg,"%");
		break;
	case '^':
		strcpy(ret_msg,"^");
		break;	
	case '&':
		strcpy(ret_msg,"&");
		break;
	case '*':
		strcpy(ret_msg,"*");
		break;	
	case '(':
		strcpy(ret_msg,"(");
		break;
	case ')':
		strcpy(ret_msg,")");
		break;
	case '-':
		strcpy(ret_msg,"-");
		break;	
	case '_':
		strcpy(ret_msg,"_");
		break;
	case '=':
		strcpy(ret_msg,"=");
		break;	
	case '+':
		strcpy(ret_msg,"+");
		break;
	case '\'':
		strcpy(ret_msg,"'");
		break;	
	case '\"':
		strcpy(ret_msg,""");
		break;
	default :
		ret_msg[0] = smsg;
		ret_msg[1] = 0;
		break;
	}
}
void HvpsConvertStr(char *buf)
{
        char temp[3];
        int i, len = strlen(buf);
        char *ret_msg = (char*) malloc(2 * len + 1);
        memset(ret_msg, 0, 2 * len + 1 );

        for (i = 0; i< len ; i++ )
        {
                if ( (unsigned char)buf[i] < 0x80 ) {
                   if ( (unsigned char)buf[i] != ' ' )
                   {
                        HvpsConvertChar(buf[i], temp);
                        strcat(ret_msg, temp);
                   }
                } else
                        strncat(ret_msg, buf + i, 1);
        }

        strcpy( buf, ret_msg );
        free(ret_msg);
}


int substring(char *str,char *substr,int start,int len)
{
	char temp[1000];
	int i=0;
	memset( temp, 0, sizeof(temp)); 
	if(strlen(str)<(start+len))
		return (0);
	for(i=0;i<len;i++)
		temp[i]=str[start+i];
	strcpy(substr,temp);	

	return (0);
}



int formatechar(char *str ,int type)
{
	char substr[1000];
	int len=0;
	int ok=0;
	memset( substr, 0, sizeof( substr ));
	
	HvpsConvertStr(str);
	len=strlen(str);

	switch(type)
	{
		case 1:
			ok=substring(str,substr,0,82);
			strcpy(str,substr);
			break;
		case 2:
			ok=substring(str,substr,82,82);
			strcpy(str,substr);
			break;
		case 3:
			ok=substring(str,substr,164,82);
			strcpy(str,substr);
			break;
		case 4:

			if(len>246)
			{      
				if(len<320)
				  ok=substring(str,substr,246,len-246);
				else
				  ok=substring(str,substr,246,82);
			}
			else
				strcpy(substr,"");
			strcpy(str,substr);
			break;
		default :
			if(len>328)
			   ok=substring(str,substr,328,len-328);
			else
			   strcpy(substr,"");
			strcpy(str,substr);
			break;
	}
	return (0);
}


int formatechar1(char *str )
{
	int ok=0;
	ok=formatechar(str,1);
	return (0);
}

int formatechar2(char *str )
{
	int ok=0;
	ok=formatechar(str,2);
	return (0);
}

int formatechar3(char *str )
{
	int ok=0;
	ok=formatechar(str,3);
	return (0);
}

int formatechar4(char *str )
{
	int ok=0;
	ok=formatechar(str,4);
	return (0);
}

int formatechar5(char *str )
{
	int ok=0;
	ok=formatechar(str,5);
	return (0);
}



void  main()
{
	char str[1000];
	int ok=0;
	memset( str, 0, sizeof( str ));	
	strcpy(str,"汇票号码:08866228出票金额:100000.00出票日期:20090728汇票到期日:20100128出票人名称:慈溪市百花电器厂收款人名称:上海娜美电器有限公司付款行名称名称:宁波交行是否你行签发有无挂止付冻他查,上述信息给予核实,为谢!");
	//ok=formatechar1(str);
	ok=formatechar2(str);
	//ok=formatechar3(str);
	//ok=formatechar4(str);
	printf(str);
	printf("\n");
	exit(0);	
}

分享到:
评论

相关推荐

    对全角半角字符串的处理

    1. **全角字符**:全角字符主要指在东亚语言环境中使用的字符类型,它们通常占据两个字节的位置(即一个汉字的宽度)。全角字符包括全角数字、全角字母、全角标点符号等。 2. **半角字符**:半角字符则是指在西文中...

    前后台实现精确截取指定长度字符串(考虑全角半角)

    然而,简单的基于字符数量的截取方法在处理包含全角和半角字符的字符串时可能会出现问题。例如,在中文环境下,一个汉字占两个字符位置,而英文字符只占一个字符位置。如果按照字符数量来截取,可能会导致截取后的...

    正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度

    在处理文本数据时,尤其是在需要确保数据安全性与准确性的场合下,判断字符串中是否含有中文字符或全角字符是非常重要的。以下是一些关键知识点: #### 1. 正则表达式基础 正则表达式是一种强大的文本处理工具,...

    截取字符办法(区分中英文)

    - **字符宽度的精确控制**:某些特殊字符(如全角英文字符)在显示宽度上与中文字符相同,但未被此方法正确处理。可以考虑进一步细化规则以更准确地控制显示宽度。 通过以上分析,我们可以看到,该方法有效地解决了...

    PHP UTF-8 等宽度截取中英文字符.txt

    ### PHP UTF-8 等宽度截取中英文字符知识点详解 #### 一、背景介绍 ...通过以上内容的学习,可以有效地解决在处理多语言文本时遇到的字符截取问题,特别是在中文环境下,确保字符串截取的准确性及美观性。

    JS按字节截取字符长度实例

    通过以上的知识点,我们可以了解到按字节截取字符串在JavaScript编程中是一个重要的应用场景,特别是在处理中文等多字节字符时,它能够保证字符串截取的正确性和准确性。提供的代码示例和方法对处理类似的字符串操作...

    Python中文字符串截取问题

    而对于大部分的中文汉字,它们则通常需要两个或更多的字节来表示。具体来说: - 占用1个字节的:ASCII字符,包括数字和英文字母。 - 占用2个字节的:部分特殊字符,如全角符号、日韩文等。 - 占用3个字节的:大多数...

    易语言源码易语言取汉字首拼模块源码.rar

    1. **字符串处理**:易语言提供了丰富的字符串操作命令,如获取字符串长度、截取字符串、替换字符串等,这些命令在处理汉字首拼音时必不可少。 2. **汉字转拼音**:易语言虽然不直接提供汉字转拼音的内置函数,但...

    PHP HTML代码串 截取实现代码

    此外,与英文字符相比,中文字符和全角符号在显示时所占的空间不同,因此截取时需要按照字符的实际显示宽度来计算。 ### HTML代码串的特殊性 在处理HTML代码串时,需要特别注意HTML标签的存在。截取时不仅要保留...

    Thinkphp模板中截取字符串函数简介

    这个函数专为处理中文字符而设计,它支持多种字符集,并能处理全角字符。`msubstr`函数的使用方法如下: ```html {$vo.title|msubstr=5,5,’utf-8′,true} ``` 参数解析: - `$str`: 需要截取的字符串,这里是`...

    PHP实现截取中文字符串不出现?号的解决方法

    在PHP开发中,处理中文字符串时经常会遇到一个问题:当截取字符串时,由于UTF-8编码的中文字符占用3个字节,如果截取的长度导致最后一个字符不完整,就会显示为“?号”。这个问题在处理中英文混合的字符串时尤为突出...

    php字符串截取函数用法分析

    针对这个问题,文章提供了第二个示例,即自定义函数substr_cut(),这个函数可以在截取时考虑中文字符(全角字符)的长度,从而避免出现乱码。 自定义函数substr_cut()的实现逻辑是:先判断截取的字符串长度是否超过...

    JAVA得到汉字的拼音

    在Java编程语言中,获取汉字的拼音是一项常见的需求,特别是在处理中文字符串时,例如搜索、排序或者构建用户友好的URL。本篇文章将深入探讨如何利用Java实现这一功能,结合提供的两个源码文件`GB2Alpha.java`和`...

    2.6号面试题---编程

    这可能意味着我们需要一个布尔变量或函数,来控制是否对字符串中的汉字进行特殊处理。在Java中,我们可以创建一个`boolean`变量如`allowChinese`,或者一个方法`isChineseAllowed()`来实现这一功能。 接着,我们...

    asp.net 截取字符串代码

    在Web开发过程中,经常需要对字符串进行处理,比如截取字符串以便更好地展示数据或优化用户体验。ASP.NET作为一种广泛使用的Web开发框架,提供了多种方法来实现字符串截取功能。本文将详细介绍一个具体的ASP.NET字符...

    php截取字符串之截取utf8或gbk编码的中英文字符串示例

    在PHP编程中,处理字符串截取时,经常会遇到编码的问题,特别是当字符串包含中文字符时。本示例主要探讨如何正确地截取UTF-8和GBK编码的中英文字符串,以适应特定的需求,例如微博的字数限制规则。 首先,我们要...

    PHP指定截取字符串中的中英文或数字字符的实例分享

    在UTF-8编码中,英文字符通常占用1个字节,而中文字符则占用3个字节。因此,在截取字符串时,需要注意字符长度的计算方式,以免出现截取错误。 PHP提供了多种函数来处理字符串,其中`mb_substr()`函数用于多字节...

    jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)

    本文将详细介绍如何使用jQuery实现一个字符输入个数的判断功能,并在超过指定长度时自动进行截取处理。具体而言,该功能会根据不同的字符类型来计算长度:对于数字和英文字母,每个字符计为1个单位;而对于中文字符...

    易语言文本处理

    - 易语言提供了丰富的字符串操作命令,如“字符串截取”、“字符串连接”、“字符串分割”等,用于处理字符串的各种需求。 - “字符串长度”函数可以获取字符串的长度,包括汉字和英文字符。 - “字符串比较”...

Global site tag (gtag.js) - Google Analytics