Python中的字符串多样的操作方法

news2024/11/18 22:22:17

文章目录

  • 1.字符串中大小写字母的转变
  • 2.字符串的左右中对齐
  • 3.字符串查找的方法
  • 4.字符串的替换
  • 5. 字符串的判断
  • 6.字符串的截取
  • 7.字符串的拆分
  • 8.字符串的拼接
  • 9.格式化字符串
  • 10.格式化字符串的语法
    • 10.12.1 对齐选项([align])
    • 10.2 填充选项([fill])
    • 10.3 符号([sign])选项
    • 10.4 精度([.precision])选项
    • 10.5 类型([type])选项
    • 10.7 灵活的玩法
    • 10.8 f-字符串

1.字符串中大小写字母的转变

(1)capitalize():将首字母变成大写,其余的变成小写。

>>> x = "I love FishC"
>>> x.capitalize()
'I love fishc'

(2)casefold():全部字母小写化。

>>> x = "I love FishC"
>>> x.casefold()
'i love fishc'

(3)title():将每个单词的首字母都大写

>>> x = "I love FishC"
>>>> x.title()
'I Love Fishc'

(4)swapcase():将大小写翻转

>>> x = "I love FishC"
>>>> x.swapcase()
'i LOVE fISHc'

(5)upper()将所有字母都大写化

>>> x = "I love FishC"
>>> x.upper()
'I LOVE FISHC'

(6)lower()将所有字母小写化

>>> x = "I love FishC"
>>> x.lower()
'i love fishc'

2.字符串的左右中对齐

(1)center(width, fillchar=’ '):作用是中对齐;参数width表示一共有几个字符;可选参数fillchar,没有的时候自动填充空格,有事填充相应的字符。

>>> x = "有内鬼,停止交易!"
>>> x.center(15)
'   有内鬼,停止交易!   '
>>> x.center(15, "淦")
'淦淦淦有内鬼,停止交易!淦淦淦'

(2)ljust(width, fillchar=’ ‘):作用是左对齐;参数同上。
(3)rjust(width, fillchar=’ '):作用是右对齐;参数同上。
(4)zfill(width):作用是右对齐,补充0,识别正负号

>>> x.zfill(15)
'000000有内鬼,停止交易!'
>>> "520".zfill(5)
'00520'
>>> "-520".zfill(5)
'-0520'

3.字符串查找的方法

(1)count(sub[, start[, end]]) 作用是:统计某个字符在字符串中有几个
参数
sub:表示要找的字符;中括号表示可选的参数
stat和end表示起始位置和终止位置。

>>> x = "上海自来水来自海上"
>>> x.count("海")
2
>>> x.count("海", 0, 5)
1

(2)find(sub[, start[, end]]) 作用是:从左往右寻找某个字符在字符串中的下标位置,找到第一个出现字符时,就立刻返回;找不到的时候放回-1

>>> x = "上海自来水来自海上"
>>> x.find("海")
1

(3)rfind(sub[, start[, end]]):从右往左

>>> x = "上海自来水来自海上"
>>> x.rfind("海")
7

(4)index(sub[, start[, end]])、rindex(sub[, start[, end]])和前面基本一样
和find不一样的是,当找不到元素的时候,会直接报错。

4.字符串的替换

(1)expandtabs()
首先是 expandtabs([tabsize=8]) 方法,它的作用是使用空格替换制表符并返回新的字符串。

>>> code = """
        print("I love FishC.")
    print("I love my wife.")"""

那么使用 expandtabs(tabsize=4) 方法,就可以将字符串中的 Tab 转换成空格,其中 tabsize 参数指定的是一个 Tab 使用多少个空格来代替:

>>> new_code = code.expandtabs(4)
>>> print(new_code)
    
    print("I love FishC.")
    print("I love my wife.")
>>>

(2)replace(old, new, count=-1) 方法返回一个将所有 old 参数指定的子字符串替换为 new 的新字符串。另外,还有一个 count 参数是指定替换的次数,默认值 -1 表示替换全部。

>>> "在吗!我在你家楼下,快点下来!!".replace("在吗", "想你")
'想你!我在你家楼下,快点下来!!'

(3)translate(table) 方法,这个是返回一个根据 table 参数(用于指定一个转换规则的表格)转换后的新字符串。

需要使用 str.maketrans(x[, y[, z]]) 方法制定一个包含转换规则的表格。

>>> table = str.maketrans("ABCDEFG", "1234567")
>>> "I love FishC.com".translate(table)
'I love 6ish3.com'

这个 str.maketrans() 方法还支持第三个参数,表示将其指定的字符串忽略:

>>> "I love FishC.com".translate(str.maketrans("ABCDEFG", "1234567", "love"))
'I  6ish3.cm'

5. 字符串的判断

判断是真与否,所以返回值都是True或False
(1)startswith(prefix[, start[, end]]) 方法用于判断 prefix 参数指定的子字符串是否出现在字符串的起始位置:

>>> x = "我爱Python"
>>> x.startswith("我")
True
>>> x.startswith("小甲鱼")
False

(2)对应的,endswith(suffix[, start[, end]]) 方法则相反,用于判断 suffix 参数指定的子字符串是否出现在字符串的结束位置:

>>> x.endswith("Python")
True
>>> x.endswith("C")
False

(1&2)对与这两种方法来说,参数里面都可规定起始位置。
这个 prefix 和 suffix 参数呀,其实是支持以元组的形式传入多个待匹配的字符串的:

>>> x = "她爱Pyhon"
>>> if x.startswith(("你", "我", "她")):
...     print("总有人喜爱Pyhon")
...
总有人喜爱Pyhon

(3) istitle() 方法来判断一个字符串中是否所有单词的首字母都是大写的

>>> x = "I Love Python"
>>> x.istitle()
True

(4)isupper()方法判断一个字符串中所有的单词是否都是大写的

>>> x.isupper()
False
>>> x.upper().isupper()
True

相反,判断是否所有字母都是小写,用 islower() 方法,我们这里就不再赘述了。
(5)如果你希望判断一个字符串中是否只是由 ASCII 字符组成,可以使用 isascii() 方法进行检测:

>>> x.isascii()
True
>>> "我爱Pyhon".isascii()
False

(6)如果你希望判断是否为一个空白字符串,可以用 isspace() 方法进行检测:

>>> "    \t\n".isspace()
True

(7)如果你希望判断一个字符串中是否所有字符都是可打印的,可以使用 isprintable() 方法:

>>> x.isprintable()
True
>>> "I love FishC\n".isprintable()
False

转义字符是不可以打印的
(8)isdecimal()、isdigit() 和 isnumeric() 三个方法都是用来判断数字的。
首先是十进制的数字:

>>> x = "12345"
>>> x.isdecimal()
True
>>> x.isdigit()
True
>>> x.isnumeric()
True

其次是罗马数字

>>> x = "ⅠⅡⅢⅣⅤ"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True

接着是中文数字

>>> x = "一二三四五"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True

最后是繁体的中文数字

>>> x = "壹贰叁肆伍"
>>> x.isdecimal()
False
>>> x.isdigit()
False
>>> x.isnumeric()
True

isalnum() 方法则是集大成者,只要 isalpha()、isdecimal()、isdigit() 或者 isnumeric() 任意一个方法返回 True,结果都为 True。
(8)isidentifier() 方法用于判断该字符串是否一个合法的 Python 标识符

>>> "I a good gay".isidentifier()
False
>>> "I_a_good_gay".isidentifier()
True
>>> "FishC520".isidentifier()
True
>>> "520FishC".isidentifier()
False

(i)就是如果你想判断一个字符串是否为 Python 的保留标识符,就是像 “if”、“for”、“while” 这些关键字的话,可以使用 keyword 模块的 iskeyword() 函数来实现:

>>> import keyword
>>> keyword.iskeyword("if")
True
>>> keyword.iskeyword("py")
False

6.字符串的截取

(1)lstrip(chars=None)、rstrip(chars=None)、strip(chars=None)

>>> "    左侧不要留白".lstrip()
'左侧不要留白'
>>> "右侧不要留白    ".rstrip()
'右侧不要留白'
>>> "    左右不要留白    ".strip()
'左右不要留白'

这三个方法都有一个 chars=None 的参数,None 在 Python 中表示没有,意思就是去除的是空白。
那么这个参数其实是可以给它传入一个字符串的:

>>> "www.ilovefishc.com".lstrip("wcom.")
'ilovefishc.com'
>>> "www.ilovefishc.com".rstrip("wcom.")
'www.ilovefish'
>>> "www.ilovefishc.com".strip("wcom.")
'ilovefish'

传入的字符串是以字符为单位来一个一个截取的

(2)如果只是希望踢掉一个具体的子字符串,应该怎么办?

那么你可以考虑 removeprefix(prefix) 和 removesuffix(suffix) 这两个方法。

它们允许你指定将要删除的前缀或后缀:

>>> "www.ilovefishc.com".removeprefix("www.")
'ilovefishc.com'
>>> "www.ilovefishc.com".removesuffix(".com")
'www.ilovefishc'

7.字符串的拆分

partition(sep)、rpartition(sep)、split(sep=None, maxsplit=-1)、rsplit(sep=None, maxsplit=-1)、splitlines(keepends=False)

(1)拆分字符串,言下之意就是把字符串给大卸八块,比如 partition(sep) 和 rpartition(sep) 方法,就是将字符串以 sep 参数指定的分隔符为依据进行切割,返回的结果是一个 3 元组(3 个元素的元组):

>>> "www.ilovefishc.com".partition(".")
('www', '.', 'ilovefishc.com')

partition(sep) 和 rpartition(sep) 方法的区别是前者是从左往右找分隔符,后者是从右往左找分隔符:

>>> "ilovefishc.com/python".partition("/")
('ilovefishc.com', '/', 'python')

注意:它俩如果找不到分隔符,返回的仍然是一个 3 元组,只不过将原字符串放在第一个元素,其它两个元素为空字符串。
(2)plit(sep=None, maxsplit=-1) 和 rsplit(sep=None, maxsplit=-1) 方法则是可以将字符串切成一块块:

>>> "苟日新,日日新,又日新".split(",")
['苟日新', '日日新', '又日新']
>>> "苟日新,日日新,又日新".rsplit(",")
['苟日新', '日日新', '又日新']
>>> "苟日新,日日新,又日新".split(",", 1)
['苟日新', '日日新,又日新']
>>> "苟日新,日日新,又日新".rsplit(",", 1)
['苟日新,日日新', '又日新']

参数sep表示切割标志,参数maxsplit表示切多少个标志,-1表示全部切割
(3)splitlines(keepends=False) 方法会将字符串进行按行分割,并将结果以列表的形式返回:

>>> "苟日新\n日日新\n又日新".splitlines()
['苟日新', '日日新', '又日新']
>>> "苟日新\r日日新\r又日新".splitlines()
['苟日新', '日日新', '又日新']
>>> "苟日新\r日日新\r\n又日新".splitlines()
['苟日新', '日日新', '又日新']

keepends 参数用于指定结果是否包含换行符,True 是包含,默认 False 则表示是不包含:

>>> "苟日新\r日日新\r\n又日新".splitlines(True)
['苟日新\r', '日日新\r\n', '又日新']

8.字符串的拼接

join(iterable) 方法是用于实现字符串拼接的。

虽然的它的用法在初学者看来是非常难受的,但是在实际开发中,它却常常是受到大神追捧的一个方法。

字符串是作为分隔符使用,然后 iterable 参数指定插入的子字符串:

>>> ".".join(["www", "ilovefishc", "com"])
'www.ilovefishc.com'
>>> "^".join(("F", "ish", 'C'))
'F^ish^C'
>>> "".join(("FishC", "FishC"))
'FishCFishC'

在这里插入图片描述
join()方法的速度快得多

9.格式化字符串

在字符串中,格式化字符串的套路就是使用一对花括号({})来表示替换字段,就在原字符串中先占一个坑的意思,然后真正的内容被放在了 format() 方法的参数中。

>>> year = 2010
>>> "鱼C工作室成立于 year 年。"
'鱼C工作室成立于 year 年。'
>>> "鱼C工作室成立于 {} 年。".format(year)
'鱼C工作室成立于 2010 年。'
>>> "1+2={}, 2的平方是{},3的立方是{}".format(1+2, 2*2, 3*3*3)
'1+2=3, 2的平方是4,3的立方是27'

在花括号里面,可以写上数字,表示参数的位置:

>>> "{1}看到{0}就很激动!".format("小甲鱼", "漂亮的小姐姐")
'漂亮的小姐姐看到小甲鱼就很激动!'

注意,同一个索引值是可以被多次引用的:

>>> "{0}{0}{1}{1}".format("是", "非")
'是是非非'

还可以通过关键字进行索引,比如:

>>> "我叫{name},我爱{fav}。".format(name="小甲鱼", fav="Pyhon")
'我叫小甲鱼,我爱Pyhon。'

当然,位置索引和关键字索引可以组合使用:

>>> "我叫{name},我爱{0}。喜爱{0}的人,运气都不会太差^o^".format("python", name="小甲鱼")
'我叫小甲鱼,我爱python。喜爱python的人,运气都不会太差^o^'

如果我只是想单纯的输出一个纯洁的花括号,那应该怎么办呢?

有两种办法可以把这个纯洁的花括号安排进去:


>>> "{}, {}, {}".format(1, "{}", 2)
'1, {}, 2'
>>> "{}, {{}}, {}".format(1, 2)
'1, {}, 2'

10.格式化字符串的语法

format_spec ::= [[fill]align][sign][#][0][width][grouping_option][.precision][type]
fill ::=
align ::= “<” | “>” | “=” | “^”
sign ::= “+” | “-” | " "
width ::= digit+
grouping_option ::= “_” | “,”
precision ::= digit+
type ::= “b” | “c” | “d” | “e” | “E” | “f” | “F” | “g” | “G” | “n” | “o” | “s” | “x” | “X” | “%”

10.12.1 对齐选项([align])

在这里插入图片描述

>>> "{:^}".format(250)
'250'
>>> "{:^10}".format(250)
'   250    '
>>> "{1:>10}{0:<10}".format(520, 250)
'       250520       '
>>> "{left:>10}{right:<10}".format(right=520, left=250)
'       250520       '

10.2 填充选项([fill])

在指定宽度的前面还可以添加一个 ‘0’,则表示为数字类型启用感知正负号的 ‘0’ 填充效果:

>>> "{:010}".format(520)
'0000000520'
>>> "{:010}".format(-520)
'-000000520'

注意,这种用法只对数字有效:

>>> "{:010}".format("FishC")
Traceback (most recent call last):
  File "<pyshell#39>", line 1, in <module>
    "{:010}".format("FishC")
ValueError: '=' alignment not allowed in string format specifier

还可以在对齐([align])选项的前面通过填充选项([fill])来指定填充的字符:

>>> "{1:%>10}{0:%<10}".format(520, 250)
'%%%%%%%250520%%%%%%%'
>>> "{:0=10}".format(520)
'0000000520'
>>> "{:0=10}".format(-520)
'-000000520'

10.3 符号([sign])选项

符号选项有三个选项:
在这里插入图片描述

10.4 精度([.precision])选项

精度([.precision])选项是一个十进制整数,对于不同类型的参数,它的效果是不一样的:

  • 对于以 ‘f’ 或 ‘F’ 格式化的浮点数值来说,是限定小数点后显示多少个数位
  • 对于以 ‘g’ 或 ‘G’ 格式化的浮点数值来说,是限定小数点前后共显示多少个数位
  • 对于非数字类型来说,限定最大字段的大小(换句话说就是要使用多少个来自字段内容的字符)
  • 对于整数来说,则不允许使用该选项值

10.5 类型([type])选项

类型([type])选项决定了数据应该如何呈现。
以下类型适用于整数:
在这里插入图片描述
以下类型值适用于浮点数、复数和整数(自动转换为等值的浮点数)如下:
在这里插入图片描述

10.7 灵活的玩法

Python 事实上支持通过关键参数来设置选项的值,比如下面代码通过参数来调整输出的精度:

>>> "{:.{prec}f}".format(3.1415, prec=2)
'3.14'

同时设置多个选项也是没问题的,只要你自己不乱,Python 就不会乱:

>>> "{:{fill}{align}{width}.{prec}{ty}}".format(3.1415, fill='+', align='^', width=10, prec=3, ty='g')
'+++3.14+++'

10.8 f-字符串

Python 随着版本的更迭,它的语法也是在不断完善的。“简洁胜于复杂”是 Python 之禅中强调的理念。

因此,在 Python3.6 的更新中,他们给添加了一个新的语法,叫 f-string,也就是 f-字符串。

f-string 可以直接看作是 format() 方法的语法糖,它进一步简化了格式化字符串的操作并带来了性能上的提升。

注:语法糖(英语:Syntactic sugar)是由英国计算机科学家彼得·兰丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。语法糖让程序更加简洁,有更高的可读性。

来,我们使用 f-string 将前面讲解 format() 方法的例子给大家修改一遍,你就知道该怎么玩了:

>>> year = 2010
>>> f"鱼C工作室成立于 {year} 年"
'鱼C工作室成立于 2010 年'
>>> 
>>> f"1+2={1+2}, 2的平方是{2*2},3的立方是{3*3*3}"
'1+2=3, 2的平方是4,3的立方是27'
>>> 
>>> "{:010}".format(-520)
>>> f"{-520:010}"
'-000000520'
>>> 
>>> "{:,}".format(123456789)
>>> f"{123456789:,}"
'123,456,789'
>>> 
>>> "{:.2f}".format(3.1415)
>>> f"{3.1415:.2f}"
'3.14'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/191872.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

切入点(pointcut)的申明规则

Spring AOP 用户可能会经常使用 execution切入点指示符。执行表达式的格式如下&#xff1a;execution&#xff08;modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern&#xff08;param-pattern&#xff09; throws-pattern?&#xff09;ret-type-p…

HandlerInterceptorAdapter拦截器多个拦截器时执行的顺序

前提&#xff1a;拦截器加载顺序是 1 2 3.Configuration public class InterceptorConfig implements WebMvcConfigurer {Autowiredprivate Test1neInterceptor test1neInterceptor;Autowiredprivate Test2neInterceptor test2neInterceptor;Overridepublic void addIntercepto…

【Android -- 开源库】权限适配 RxPermissions 的基本使用

运行时权限 从 Android 6.0&#xff08;API 级别 23&#xff09;开始&#xff0c;用户开始在应用运行时向其授予权限&#xff0c;而不是在应用安装时授予。 系统权限分为两类&#xff1a; 正常权限&#xff1a;只需在你应用的 Androidmanifest.xml 中列出&#xff0c;安装时…

大数据---Hadoop安装教程(一)

Hadoop安装教程前期工作 以下步骤基于网络配置完成&#xff0c;并且能连接xshell和xftp工具 Linux安装: Linux—CentOS 7 64位安装教程 Xshell连接: Linux—Xshell连接 文章目录Hadoop安装教程前期工作安装vim编辑器免密登录ssh登录过程免密登录的原理操作1.免密登录2.开启远程…

比较排序——三路快速排序

快速排序&#xff08;Quicksort&#xff09;&#xff0c;计算机科学词汇&#xff0c;适用领域Pascal&#xff0c;c等语言&#xff0c;是对冒泡排序算法的一种改进。一、单路排序流程快速排序算法通过多次比较和交换来实现排序&#xff0c;其排序流程如下&#xff1a; (1)首先设…

e^(-x^2)的原函数(本求法为负面典型,仅供参考)

先放正确答案 ∫−∞∞e−x2π\int _{-\infin} ^{\infin} e^{-x^{2}}\sqrt{\pi}∫−∞∞​e−x2π​ 证法有许多 这是选自点我的一个证明方法。 首先要明确这是一个超越函数 求不了原函数 所以以下部分……纯属失败案例 注&#xff1a;原本在desmos上完成的推导&#xff0c;复制…

stable-diffusion-webui的基础功能手动安装,了解代码结构、依赖、模型出处

前言 虽然&#xff0c;当前有很多stable-diffusion-webui 的一键安装包&#xff0c;但是不易于彻底理解该项目 主要介绍了&#xff0c;手动安装 stable-diffusion-webui 基础功能的过程&#xff0c;手动安装&#xff0c;了解代码结构、依赖、模型出处 一、手动下载stable-dif…

2023 如何学好 Python web 开发?走心局送给大家

1.走心 我在没有接触互联网这个行业的时候&#xff0c; 就一直好奇网站是怎么构建的。 我现在虽然从事互联网相关的工作&#xff0c; 但是也一直没有接触过Web开发之类的东西&#xff0c; 不过兴趣终归还是要有的&#xff0c;还要自己动手去实践的。 Web开发的途径有好多种&am…

Linux 三剑客命令之 awk 详解

目录 一、Awk 实战讲解 1.1 awk 的原理 1.2 BEGIN 和 END 模块 1.3 运算符 1.4 常用 awk 内置变量 1.5 awk 正则 1.6 awk 常用字符串函数 一、Awk 实战讲解 awk 是一种很棒的语言&#xff0c;它适合文本处理和报表生成&#xff0c;其语法较为常见&#xff0c;借鉴了某些…

Fisco Bcos区块链五(后端区块链应用开发框架及流程)

文章目录项目框架&#xff1a;开发流程&#xff1a;1、创建一个Java工程2、引入FISCO BCOS Java SDK3、配置SDK证书4、业务逻辑开发第一步.将3编译好的Java合约引入项目中第二步.开发业务逻辑5. 运行应用项目框架&#xff1a; |-- build.gradle // gradle配置文件 |-- gradle …

element-ui组件的使用,导航菜单(NavMenu)组件、分页组件的使用

一、ElementUI 1、简介&#xff1a;是饿了么公司推出的基于Vue2的组件库 2、使用方法&#xff1a;具体可见官网https://element.eleme.cn/#/zh-CN/component/installation ​ &#xff08;1&#xff09;在vue项目中安装&#xff1a;npm install element-ui ​ &#xff08;…

win10 在线、离线安装microsoft store 版 WSL

实验环境&#xff1a; 操作系统&#xff1a;windows版本 10.0.19045.2486 WSL版本&#xff1a;Microsoft.WSL_1.0.3.0_x64_ARM64.msixbundle 离线安装 获取WSL安装包&#xff1a; 在此页面获取发布网址&#xff1a; Microsoft Store 中适用于 Linux 的 Windows 子系统的发行…

深度卷积对抗神经网络 基础 第七部分 StyleGAN

深度卷积对抗神经网络 基础 第七部分 StyleGAN 深度卷积神经网络模型已经应用在非常多的领域&#xff0c;但是其总包含了很多潜在的问题&#xff0c;比如说训练速度过慢&#xff0c;生成器与判别器的进化程度不平衡等等。那么&#xff0c;随着各种方法和算法的普及和进化&…

就业秘籍!这些软件测试的面试话术你要知道

近些年&#xff0c;各行各业找工作都不太容易&#xff0c;虽然身处技术岗位的软件测试因企业需求大&#xff0c;要比之其他行业容易&#xff0c;但&#xff0c;稍有不慎&#xff0c;也会让求职者与自己心仪的offer失之交臂&#xff0c;因此&#xff0c;大家在准备前面前&#x…

关键点匹配——商汤LoFTR源码详解

源码地址见文末 1.项目与参数配置解读 首先,进入目录,使用pip install -r requirements.txt配置环境。 首先,对于demo的运行,首先需要准备好需要用于关键点匹配的数据,提供的代码中置于了image文件夹下,然后是训练的权重,代码中下载了室内场景和室外场景的训练权重。 …

抓包展示vlan报文(8021Q)

VLAN数据帧格式要使交换机能够分辨不同VLAN的报文&#xff0c;需要在报文中添加标识VLAN信息的字段。IEEE 802.1Q协议规定&#xff0c;在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签&#xff08;又称VLAN Tag&#xff0c;简称Tag&am…

什么护眼台灯比较专业?2023央视推荐的护眼灯

台灯作为最常见的照明工具&#xff0c;也是因为有许多孩子都有近视的现象&#xff0c;从儿童青少年的近视人数可以看出&#xff0c;我国的近视人数是全国第一的&#xff0c;所以选择一款好的护眼台灯是很关键的&#xff0c;有哪些专业的护眼台灯呢&#xff1f;挑选台灯最主要是…

vue 使用 wangeditor 富文本编辑器

wangeditor 是一个轻量级 web 富文本编辑器&#xff0c;配置方便&#xff0c;使用简单。 1&#xff09;安装 wangeditor 终端安装 wangeditor 库&#xff1a; yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save2&#xff09;页面绑定 创建一个 xxx.…

unity 关于UV坐标算点 和 PerlinNoise(柏林噪声)

生成相关效果代码如下&#xff1a; public int w 100;public int h 100;public Texture2D texture;public Image image;public Color tu Color.yellow;public Color cao Color.green;// Start is called before the first frame updatevoid Start(){texture new Texture2D…

剑指 Offer II 007. 数组中和为 0 的三个数

题目链接 剑指 Offer II 007. 数组中和为 0 的三个数 mid 题目描述 给你一个整数数组 nums&#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]]满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0。 请你返回所有和为 0 且不重复的三…