代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
C/C++
】
简单的字符串匹对(非正则表达式)
作者:
Amanda
/ 发布于
2016/1/18
/
573
#include <stdio.h> #include <stdlib.h> #include <string.h> #define LOWER_CASE 0 #define UPPER_CASE 1 #define CHAR_ERROR 2 int flag = 0; //判断字符大小写 int Judge_char_A_or_a(char c) { if (c >= 'A' && c <= 'Z') return UPPER_CASE; else if (c >= 'a' && c <= 'z') return LOWER_CASE; else return CHAR_ERROR; } //单个字符比较 int Judge_Same(char src, char dst) { int result; result = Judge_char_A_or_a(dst); switch (Judge_char_A_or_a(src)) { case LOWER_CASE: { if (result == LOWER_CASE) { if (src != dst) { return 0; } } else if (result == UPPER_CASE) { if (src != (dst + 32)) return 0; } else return 0; } break; case UPPER_CASE: { if (result == LOWER_CASE) { if (src != (dst - 32)) { return 0; } } else if (result == UPPER_CASE) { if (src != dst) return 0; } else return 0; } break; case CHAR_ERROR: { if (src != dst) return 0; } break; default: break; } return 1; } //比较字符模式长度 int JudgeStrModeLen(char * str) { int len = 0; while(*str++ != '[') { len++; } len++; while (*str++ != ']') { } while(*str++ != '\0') { len++; } return len; } //比较字符串 char * StrMatching(char * src, char * strmode) { int i, j = 0; if ((strlen(src)) != (JudgeStrModeLen(strmode))) { return strmode; } for (i = 0; i < strlen(src); i++) { if (!Judge_Same(src[i], *strmode)) { if (strmode[j] == '[') { flag = 1; *strmode++; } else { return strmode; } if (flag) { while (!Judge_Same(src[i], *strmode)) { *strmode++; } while (!Judge_Same(*strmode, ']')) { *strmode++; } flag = 0; } } *strmode++; } return src; } int main() { char str1[] = "Aab"; char str2[] = "a2B"; char str3[] = "ab"; char str4[] = "ABB"; char str_mode[] = "a[a2b]b"; printf("strMode_len = %d\n", JudgeStrModeLen(str_mode)); printf("1 %s\n", StrMatching(str1, str_mode)); printf("2 %s\n", StrMatching(str2, str_mode)); printf("3 %s\n", StrMatching(str3, str_mode)); printf("4 %s\n", StrMatching(str4, str_mode)); return 0; }
试试其它关键字
字符串
同语言下
.
C分鱼问题
.
链表
.
最大连续和
.
编码字符串
.
libiconv字符编码处理及判断字符串是否为utf8
.
一组数中两两二元组,差最大有几对,差最小呢?(数组
.
通过管道获取一个进程的执行状态
.
多关键字排序
.
字符串字典序排序
.
3元一次方程(牛顿迭代法求方程的根)
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Amanda
贡献的其它代码
(
8
)
.
简单的字符串匹对(非正则表达式)
.
使用GridView等控件导出Excel
.
下载功能
.
winform导出word
.
在A窗口中打开B窗口,在B窗口中操作完以后关闭B窗口,
.
判断滚动条是否到达页面的尾部
.
安全退出
.
mvc 获取 HtmlHelper 表达式值
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3