C#字符串自增自减算法
本文URL:http://www.cnblogs.com/CUIT-DX037/p/6770535.html
实现字符串自增和自减运算:
1.数字从 0-9 变化;
2.字母从 A-Z、a-z 变化;
3.其它字符跳过;
4.以上变化依据其Ascii码值;
/// <summary>
/// 字符串运算
/// </summary>
public class StringOperation
{ /// <summary>
/// 通过ASCII码值,对字符串自增1
/// </summary>
/// <param name="pStr">输入字符串</param>
/// <returns></returns>
public static string StringIncreaseOne(string pStr)
{
var vRetStr = pStr;
if ( == pStr.Length)
{
vRetStr = "";
}
else
{
// 将最后一个字符与之前的字符串分开
string vOtherStr = pStr.Substring(, pStr.Length - );
int vIntChar = (int)pStr[pStr.Length - ]; //转ASCII码值
if ( <= vIntChar && vIntChar <= ) //是数字(0 - 9)
{
vIntChar++; //自增1
if (vIntChar == ) // 进一位
{
vIntChar = ;
vOtherStr = StringIncreaseOne(vOtherStr);
}
}
else if ( <= vIntChar && vIntChar <= ) //是字母(A - Z)
{
vIntChar++; //自增1
if (vIntChar == )
{
vIntChar = ;
vOtherStr = StringIncreaseOne(vOtherStr);
}
}
else if ( <= vIntChar && vIntChar <= ) //是字母(a - z)
{
vIntChar++; //自增1
if (vIntChar == )
{
vIntChar = ;
vOtherStr = StringIncreaseOne(vOtherStr);
}
}
else // 其它字符 -> 跳过
{
vOtherStr = StringIncreaseOne(vOtherStr);
}
vRetStr = vOtherStr + (char)vIntChar;
}
return vRetStr;
} /// <summary>
/// 通过ASCII码值,对字符串自减1
/// </summary>
/// <param name="pStr">输入字符串</param>
/// <returns></returns>
public static string StringReducingOne(string pStr)
{
var vRetStr = pStr;
if ( == pStr.Length)
{
vRetStr = "";
}
else
{
string vOtherStr = pStr.Substring(, pStr.Length - );
int vIntChar = (int)pStr[pStr.Length - ]; //转ASCII码值
if ( <= vIntChar && vIntChar <= ) //是数字(0 - 9)
{
vIntChar--;
if (vIntChar == )
{
vIntChar = ;
vOtherStr = StringReducingOne(vOtherStr);
}
}
else if ( <= vIntChar && vIntChar <= ) //是数字(A - Z)
{
vIntChar--;
if (vIntChar == )
{
vIntChar = ;
vOtherStr = StringReducingOne(vOtherStr);
}
}
else if ( <= vIntChar && vIntChar <= ) //是数字(a - z)
{
vIntChar--;
if (vIntChar == )
{
vIntChar = ;
vOtherStr = StringReducingOne(vOtherStr);
}
}
else // 其它字符 -> 跳过
{
vOtherStr = StringReducingOne(vOtherStr);
}
vRetStr = vOtherStr + (char)vIntChar;
}
return vRetStr;
} /// <summary>
/// 通过ASCII码值,对字符串自增
/// </summary>
/// <param name="pStr">输入字符串</param>
/// <param name="pCount">自增个数</param>
/// <returns></returns>
public static string StringIncrease(string pStr, int pCount)
{
string vRetStr = pStr;
for (int i = ; i < pCount; i++)
{
vRetStr = StringIncreaseOne(vRetStr);
}
return vRetStr;
} /// <summary>
/// 通过ASCII码值,对字符串自减
/// </summary>
/// <param name="pStr">输入字符串</param>
/// <param name="pCount">自减个数</param>
/// <returns></returns>
public static string StringReducing(string pStr, int pCount)
{
string vRetStr = pStr;
for (int i = ; i < pCount; i++)
{
vRetStr = StringReducingOne(vRetStr);
}
return vRetStr;
} }
C#字符串自增自减算法的更多相关文章
- java基础(二) 自增自减与贪心规则
引言 JDK中提供了自增运算符++,自减运算符--.这两个操作符各有两种使用方式:前缀式(++ a,--a),后缀式(a++,a--).可能说到这里,说不得有读者就会吐槽说,前后缀式都挺简单的,前 ...
- 运算符:三目运算符,运算符优先级,sizeof,自增自减,取余
一://---------运算符-----------// 1.运算符是告诉编译程序执行特定算术或逻辑操作的符号. 2.按照功能划分: 算术运算符. 关系运算符与逻辑运算符.按位运算符. 3.运算符根 ...
- day03运算符、表达式、自增自减、三目运算符、程序结构、用户输入
复习 1.java的输出语句 1)System.out.println(); 2)System.out.print(); 2.注释 1)单行注释 // 2)多行注释 /* .... */ 3.变量 1 ...
- ipv4 ipv6 求字符串和整数一一映射的算法 AmazonOrderId
字符串和整数一一映射的算法 公司每人的英文名不同,现在给每个英文名一个不同的数字编号,怎么设计? 走ipv4/6 2/32 2/128就够了,把“网段”概念对应到“表或库”,ip有a_e5类,这概念 ...
- 一文详解MySQL如何同时自增自减多个字段
本文将带大家聊一下如何同时自增自减多个字段 开始之前,先分享一套MySQL教程,小白入门或者学习巩固都可以看 MySQL基础入门-mysql教程-数据库实战(MySQL基础+MySQL高级+MySQL ...
- 【转】 C语言自增自减运算符深入剖析
转自:http://bbs.csdn.net/topics/330189207 C语言的自增++,自减--运算符对于初学者来说一直都是个难题,甚至很多老手也会产生困惑,最近我在网上看到一个问题:#in ...
- HDU3549 Flow Problem(网络流增广路算法)
题目链接. 分析: 网络流增广路算法模板题.http://www.cnblogs.com/tanhehe/p/3234248.html AC代码: #include <iostream> ...
- C++ Primer 学习笔记_61_重载操作符与转换 --自增/自减操作符
重载操作符与转换 --自增/自减操作符 引言: 自增,自减操作符常常由诸如迭代器这种类实现,这种类提供相似于指针的行为来訪问序列中的元素.比如,能够定义一个类,该类指向一个数组并为该数组中的元素提供訪 ...
- C: printf参数执行顺序与前置后置自增自减的影响
起源: 今天在了解副作用side-effect的过程中,看到了下面的网页,把我带到了由printf引起的一系列问题,纠结了一整天,勉强弄懂. 第一个代码没什么好解释的.而第二个printf(" ...
随机推荐
- day02 秘钥生成,免密访问命令
hadoop免密登陆: 生成秘钥: ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/aut ...
- 基于OpenCV依次读取文件夹下的所有图像文件
//编程环境:VS2008+OpenCV1.1, //本程序首先挨个读取F://my face database//OnlyFace文件夹下的所有图 像 文件,之后,在项目文件夹下 //建立一 个名为 ...
- IE和W3c盒模型
盒子模型是css中一个重要的概念,理解了盒子模型才能更好的排版.其实盒子模型有两种,分别是 ie 盒子模型和标准 w3c 盒子模型.他们对盒子模型的解释各不相同,先来看看我们熟知的标准盒子模型: 从上 ...
- Learning Python 008 正则表达式-003 search()方法
Python 正则表达式 - search()方法 findall()方法在找到第一个匹配之后,还会继续找下去,findall吗,就是找到所有的匹配的意思.如果你只是想找到第一个匹配的信息后,就不在继 ...
- Haskell语言为什么值得你去学习
摘自http://www.vaikan.com/why-haskell-is-worth-learning/ Haskell语言为什么值得你去学习 当我向一些新手推荐学习Haskell语言时,得到的反 ...
- 20.Ecshop 2.x/3.x SQL注入/任意代码执行漏洞
Ecshop 2.x/3.x SQL注入/任意代码执行漏洞 影响版本: Ecshop 2.x Ecshop 3.x-3.6.0 漏洞分析: 该漏洞影响ECShop 2.x和3.x版本,是一个典型的“二 ...
- c++中字符串的截取:
c++中字符串的截取: string 类提供字符串处理函数,利用这些函数,程序员可以在字符串内查找字符,提取连续字符序列(称为子串),以及在字符串中删除和添加.我们将介绍一些主要函数. 1.函数fin ...
- sql获取上月同期
select CONVERT(varchar(10), CONVERT(varchar(8),dateadd(month,-1,getdate()),23)+CONVERT(varchar(10),d ...
- HTML5学习笔记(七)HTML5 服务器发送事件(Server-Sent Events)
Server-Sent 事件指的是网页自动获取来自服务器的更新. 以前也可能做到这一点,前提是网页不得不询问是否有可用的更新.通过服务器发送事件,更新能够自动到达. EventSource 对象用于接 ...
- shell脚本知识点汇总
sed中在对内容进行修改时,有时候需要引用外部变量的值或者获取一个shell命令执行的结果,以便达到更加可观的输出结果 1.sed中使用变量替换1)sed命令使用双引号的情况下,使用$var直接引用[ ...