今天在遇到一个需求的时候,需要一个字符串实现自增。是根据数据库中一个自增的int类型的值,实现自增的。但是要加上前缀。比如,数据库中有一个自增的值,为,2。那么这个自增的值后面的值就位3、4、5、6、7.....100、101、102......所以我要获得 的这个字符串就要是"S0001"、"S0002"、"S0003"........"S0100"、"S0101"、"S0102"......

因为,这个"0"的数量还比较少,最一开始写的一个方法:

public string GetSelfIncrStr()
{
var shopCode = "S";
var newID = ;
if (newID < )
{
shopCode += $"000{newID}";
}
else if (newID < )
{
shopCode += $"00{newID}";
}
else if (newID < )
{
shopCode += $"0{newID}";
}
else
{
shopCode += newID;
}
return shopCode;
}

0的个数少,还可以这样写,如果有十个"0"或者更多的呢?这样写就不方便了。其实这个也可以用设计模式中的责任链模式来写的,不过当0的个数多了,也不好写。设计模式用来搞这个,有点浪费呀!

幸好,C#中字符串有一个方法

public String PadLeft(int totalWidth, char paddingChar);

返回值:

  返回一个新字符串,该字符串通过填充右对齐此实例中的字符。它们位于左侧,具有指定的Unicode字符,具有指定的总长度。

参数:

  totalWidth:结果字符串中的字符数,等于原始字符串的数目,字符加上任何其他填充字符。

  paddingChar:Unicode填充字符。

所以,这个方法就可以改写成如下:

public string GetSelfIncrStr()
{
var newID = ;
return "S" + newID.ToString().PadLeft(, '');
}

这样写起来就方便多了。

还有一个方法:

public String PadRight(int totalWidth);
static string GetStr()
{
var str = "";
return str.PadRight(, '');
}

这个方法得到的结果是10000。

  其实,这个任务,是根据数据库中的int类型自增的值,来自增这个字符串的,这个自增的字符串还是表的主键。这个表不是我设计的,个人理解,这种场景还是尽量少的有吧,因为这样的设计并不好。应该从数据库表的设计和使用场景来设计。

  不过这两个方法还是蛮好用的。

C#中PadLeft,PadRight的用法的更多相关文章

  1. C# 中 PadLeft和PadRight 的用法

    C# 中 PadLeft和PadRight 的用法 在 C# 中可以对字符串使用 PadLeft 和 PadRight 进行轻松地补位. PadLeft(int totalWidth, char pa ...

  2. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  3. ecshop中foreach的详细用法归纳

    ec模版中foreach的常见用法. foreach 语法: 假如后台:$smarty->assign('test',$test); {foreach from=$test item=list ...

  4. matlab中patch函数的用法

    http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...

  5. C#中timer类的用法

    C#中timer类的用法 关于C#中timer类  在C#里关于定时器类就有3个   1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类 ...

  6. C#中dynamic的正确用法

    C#中dynamic的正确用法  http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4 ...

  7. C++中typename关键字的用法

    我在我的 薛途的博客 上发表了新的文章,欢迎各位批评指正. C++中typename关键字的用法

  8. Guava中Predicate的常见用法

    Guava中Predicate的常见用法 1.  Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...

  9. C++中const 的各种用法

    C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: ; size = ; // error: assignment of read-only v ...

随机推荐

  1. markdown语法之字体、字号、颜色以及背景色

    字体.字号与颜色 html标签:<font> font标签属性: face:字体 size:规定文本的尺寸大小. 可能的值:从 1 到 7 的数字. 浏览器默认值是 3. color: 颜 ...

  2. go break的使用

    文章目录 一.踩得坑 二.break的使用 1.break用于for循环 2. break用于select 3.break用于嵌套循环 4.break label . goto label .cont ...

  3. Spring源码学习笔记之基于ClassPathXmlApplicationContext进行bean标签解析

    bean 标签在spring的配置文件中, 是非常重要的一个标签, 即便现在boot项目比较流行, 但是还是有必要理解bean标签的解析流程,有助于我们进行 基于注解配置, 也知道各个标签的作用,以及 ...

  4. python获取bing地图发布自己的TMS服务(一)下载瓦片

    部分结果 bing地图瓦片使用QuadKey作为命名方式. QuadKey简介 如何计算quadkey 在给定level下,把行号tileY和列号tileX转换为2进制,然后行列交叉存储,再转换为4进 ...

  5. [vue]数据来源

    1.组件data函数return的数据 作用域是组件本身 可以在模板template及计算属性computed和方法methods中使用 2.父传子,props数据 来自父级:可以是写死的,或者是来自 ...

  6. 28. 实现strStr() (双指针)

    实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始).如果不存在,则返 ...

  7. 一次使用pip后的总结

    pip 常用命令及搭配操作 一 .当安装了多个版本python的时候,表示用pythonx 的pip 进行: 1.pythonx -m pip install + 包名 装 包 2.pythonx - ...

  8. 毕业半年,买了一台MacBook Pro

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 毕业半年,给自己买了一台MacBookPro 1 ...

  9. rails 构建 API

    我是来鼓吹使用 Rails 写 API 的. 原文在此: https://labs.kollegorna.se/blog/2015/04/build-an-api-now/ 原文有一个很大的缺陷就是读 ...

  10. 让外部的开发机直接访问Kubernetes群集内的服务!

    让外部的开发机直接访问Kubernetes群集内的服务! 1.场景 容器化+K8s编排已经是现在进行时把网站的多个项目设计为云原生(Cloud Native)或老项改造为云原生可以获得诸多能力例如无云 ...