s = "Adobe Acrobat Pro DC"

print(s[0])
print(s[1])
print(s[2])
print(s[3])
print(s[4])
print(s[-2])
print(s[-1])

# 通过索引获取到的内容还是一个字符串
# 切片可以对字符串进行截取
# 语法 s[起始位置:结束位置]  左闭右开

s = "Adobe Acrobat Pro DC"
print(s[0:6])
print(s[:6])   从头到第6个字符
print(s[6:])   第6个字符到末尾
print(s[-3:-1])  倒数第3个字符到倒数第1个字符

# 步长
语法:s[起始位置:结束位置:步长] 范围起始位置到结束位置,每(步长)字符取第一个  (以步长分组)
s = "Adobe Acrobat Pro DC"
s1 = s[0:5:2]
print(s1)  #结果:Aoe

s1 = s[6:2:-2] #负号代表方向,反着取
print(s1)
s1 = s[::-1]
print(s1) #将字符串倒过来



# 字符串相关方法
# 切记,字符串是不可变的对象,任何操作对源字符串是不会有任何影响的


# 字符串转换
s = "zhangsan and lisi and wangwu and zhaoliu "
s1 = s.capitalize()  # 首字母变大写

s1 = s.lower()  # 全部变小写
s1 = s.upper()  # 全部变大写

s1 = s.swapcase()  # 大小写互换

s1 = s.casefold()  # 转换小写,lower对某些国家支持不好,casefold对所有字符有效

s1 = s.title()  # 每个被特殊字符隔开的字母首字母大写(空格,中文字符也算特殊字符)



# 字符串切片
s = "  zhangsan and lisi and wangwu and zhaoliu  "
s.center(10)  # 拉长为10个字符, 原字符串居中显示,其余空格补位
s.center(10, "*")  # 部位用*替代

s1 = s.strip()  # 去掉左右两侧空格
s1 = s.strip("zhang")  # 去掉左右两侧指定字符(无论有多少符合都去掉)
s1 = s.lstrip()  # 去掉左两侧空格
s1 = s.rstrip()  # 去掉右两侧空格

s1 = s.replace("zhangsan", "123")  # 字符替换(全部),可用于去掉字符
s1 = s.replace("zhangsan", "123" , 2)  # 字符替换(前2个)

list = s.split(" ")  # 字符串切割,切出来是列表 如果切两侧,会产生空字符串


# 字符串格式化输出

s = "我叫%s ,我今年%d岁了,我性别是%s" % ("张三", 20, "男")
s1 = "我叫{} ,我今年{}岁了,我性别是{}".format("张三", 20, "男")
s2 = "我叫{1} ,我今年{0}岁了,我性别是{2}".format(20, "张三",  "男")  # 可控制位置
s3 = "我叫{name} ,我今年{age}岁了,我性别是{sex}".format(name="张三", age=20, sex="男")  # 关键字


# 字符串查找
s = "zhangsan and lisi and wangwu and zhaoliu"
s.startswith("zhangsan")  # 是否以“”为开头
s.endswith("zhangsan")  # 是否以“”为结尾

s.count("z")  # 判断有几个“”

s.find("and")  # 在源字符串中查找“”并返回相应索引。找到即返回,没找到返回-1 输入几个字符,以几个字符为一组。返回相应位置
s.find("and", 0, 12)  # 添加范围,左闭右开
s.index("and")  # 与find不同,找不到直接报错

# 字符串条件判断

s = "zhangsan and lisi and wangwu and zhaoliu"
s.isalnum()  # 是否由字母和数字组成
s.isdigit()  # 是否由数字组成
s.isnumeric()  # 判断是否由数字组成,可识别中文大写
s.isalpha()  # 是否由字母组成

i = len(s)  # 计算字符串长度
s.__len__()  # len()中调用的就是这个,都可以求长度

# 字符串遍历
for c in s:
    print(c)