Python3 与 C# 基础语法对比(String专栏)

Python3 与 C# 基础语法对比:https://www.cnblogs.com/dotnetcrazy/p/9102030.html

事先声明一下,避免让新手进入误区:不是说Python比NetCore要好,而Python设计的目的就是==》让程序员解放出来,不要过于关注代码本身,那么性能、规范等等各方面隐患就存在了,后面编写一个稍微大点的项目就看出来了。而且不要太受语言约束,之前我也说过,用各自语言的优势来为项目服务~ 这才是开发王道。比如Python用来数据分析,Go用来并发处理等等,不多说了,记住一句话即可:“Net是性价比最高的”

步入正题:欢迎提出更简单或者效率更高的方法

基础系列:(这边重点说说Python,上次讲过的东西我就一笔带过了)

1.输出+类型转换

Python写法:

NetCore:

2.字符串拼接+拼接输出方式

python:

NetCore

3.字符串遍历、下标、切片

重点说下python的下标,有点意思,最后一个元素,我们一般都是len(str)-1,他可以直接用-1,倒2自然就是-2

#最后一个元素:user_str[-1]

user_str[-1]

user_str[len(user_str)-1] #其他编程语言写法

#倒数第二个元素:user_str[-2]

这次为了更加形象对比,一句一句翻译成NetCore(有没有发现规律,user_str[user_str.Length-1]==》-1是最后一个,user_str[user_str.Length-2]==》-2是最后一个。python在这方面简化了

3.2 python切片语法:[start_index:end_index:step] (end_index取不到)

# 切片:[start_index:end_index:step] (end_index取不到)# eg:str[1:4] 取str[1]、str[2]、str[3]# eg:str[2:] 取下标为2开始到最后的元素# eg:str[2:-1] 取下标为2~到倒数第二个元素(end_index取不到)# eg:str[1:6:2] 隔着取~str[1]、str[3]、str[5](案例会详细说)# eg:str[::-1] 逆向输出(案例会详细说,)

来个案例:我注释部分说的很详细了,附录会贴democode的

NetCore,其实你用Python跟其他语言对比反差更大,net真的很强大了。补充(对比看就清楚Python的step为什么是2了,i+=2==》2)

方法系列:

# 查找:find,rfind,index,rindex Python查找推荐你用find和rfind

netcore:index0f就相当于python里面的find


# 计数:count python:str.count()

netcore:这个真用基础来解决的话,只能自己变形一下:(原字符串长度 - 替换后的长度) / 字符串长度

Python补充说明:像这些方法练习用ipython3就好了(sudo apt-get install ipython3),code的话需要一个个的print,比较麻烦(我这边因为需要写文章,所以只能一个个code)

index查找不到会有异常


# 替换:replace Python:xxx.replace(str1, str2, 替换次数)

replace可以指定替换几次

NetCore:替换指定次数的功能有点业余,就不说了,你可以自行思考哦~


#连接:join:eg:print("-".join(test_list))

netcore:string.Join(分隔符,数组)

#分割:split(按指定字符分割),splitlines(按行分割),partition(以str分割成三部分,str前,str和str后),rpartition 说下split的切片用法 :print(test_input.split(" ",3)) #在第三个空格处切片,后面的不切了

继续说说splitlines(按行分割),和split("\n")的区别我图中给了案例 扩展:split(),默认按空字符切割(空格、\t、\n等等,不用担心返回'')

最后说一下partitionrpartition 返回是元祖类型(后面会说的),方式和find一样,找到第一个匹配的就罢工了【注意一下没找到的情况】

netcore: split里面很多重载方法,可以自己去查看下,eg:Split("\n",StringSplitOptions.RemoveEmptyEntries) 再说一下这个:test_str.Split('a');//返回数组如果要和Python一样返回列表==》test_str.Split('a').ToList(); 【需要引用linq的命名空间哦】


# 头尾判断:startswith(以。。。开头),endswith(以。。。结尾)

netcore:


# 大小写系:lower(字符串转换为小写),upper(字符串转换为大写),title(单词首字母大写),capitalize(第一个字符大写,其他变小写)

netcore:


# 格式系列:lstrip(去除左边空格),rstrip(去除右边空格),strip(去除两边空格)美化输出系列:ljust,rjust,center

netcore:Tirm很强大,除了去空格还可以去除你想去除的任意字符

ljust,rjust,center这些就不说了,python经常在linux终端中输出,所以这几个用的比较多。net里面string.Format各种格式化输出,可以参考


# 验证系列:isalpha(是否是纯字母),isalnum(是否是数字|字母),isdigit(是否是纯数字),isspace(是否是纯空格) 一张图搞定,其他的自己去试一试吧,注意哦~ test_str5=" \t \n " #isspace() ==>true

netcore:string.IsNullOrEmpty 和 string.IsNullOrWhiteSpace 是系统自带的,其他的你需要自己封装一个扩展类(eg:简单封装)【附录有】

老规矩附录见原文地址

原文发布于微信公众号 - 我为Net狂(dotNetCrazy)

原文发表时间:2018-05-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

go语言:函数参数传递详解

参数传递是指在程序的传递过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程。比较常见的参数传递有:值传递,按地址传递参数或...

1371
来自专栏IT派

程序员必知的 Python 陷阱与缺陷列表

我个人对陷阱的定义是这样的:代码看起来可以工作,但不是以你“想当然”的方式。如果一段代码直接出错,抛出了异常,我不认为这是陷阱。比如,Python程序员应该都遇...

1084
来自专栏Java学习网

Java 8的函数式编程学习

Java 8的函数式编程学习 函数式编程语言是什么? 函数式编程语言的核心是它以处理数据的方式处理代码。这意味着函数应该是第一等级(First-class)的...

2617
来自专栏绿巨人专栏

学习Scala: 初学者应该了解的知识

2814
来自专栏IT大咖说

程序员必知的 Python 陷阱与缺陷列表

阅读字数:3754 | 10分钟阅读 我个人对陷阱的定义是这样的:代码看起来可以工作,但不是以你“想当然“”的方式。如果一段代码直接出错,抛出了异常,我不认为这...

3527
来自专栏编程

您真的会用switch吗?

C语言的理念,程序员应该知道自己正在干什么,而且保证自己的所作所为是正确的。 switch知多少 各个case和default的顺序可以是任意的,但习惯上总是d...

2047
来自专栏C/C++基础

C++智能指针

C++中,动态内存的管理是通过一对运算符来完成的,new用于申请内存空间,调用对象构造函数初始化对象并返回指向该对象的指针。delete接收一个动态对象的指针,...

2061
来自专栏分布式系统和大数据处理

四种简单的排序算法

我觉得如果想成为一名优秀的开发者,不仅要积极学习时下流行的新技术,比如WCF、Asp.Net MVC、AJAX等,熟练应用一些已经比较成熟的技术,比如Asp.N...

1232
来自专栏逸鹏说道

Python3 与 C# 基础语法对比(String专栏)

Python3 与 C# 基础语法对比:https://www.cnblogs.com/dotnetcrazy/p/9102030.html

1193
来自专栏用户2442861的专栏

sizeof小览

http://blog.csdn.net/scythe666/article/details/47012347

691

扫码关注云+社区