ToB企服应用市场:ToB评测及商务社交产业平台
标题:
aardio教程五) 写Python风格的aardio代码(字符串篇)
[打印本页]
作者:
千千梦丶琪
时间:
2024-5-16 12:59
标题:
aardio教程五) 写Python风格的aardio代码(字符串篇)
前言
熟悉一个新的语言最贫苦的就是需要了解一些库的利用,特别是基础库的利用。
所以我想给aardio封装一个Python风格的库,Python里的基础库是什么方法名,aardio里也封装同样的方法名。
这样就不需要单独去了解aardio里一些方法的利用细节,可以很方便的将Python代码改成aardio代码。
语法差异
不过因为语法上有差异,利用上不能做到完全一模一样。比如Python字符串是可迭代的,而aardio并不能迭代类,aardio中的迭代器是函数。
另外,有些函数较为复杂,我只实现最基本的意思,比如Python的isdigit和isnumeric是检测字符串是否全是数字,它的数字还包含一些其他语言的数字,不只是0-9的10个阿拉伯数字。
下载地址
库名就叫pyaardio,然后封装字符串的库就是pyaardio.str,封装列表的库就是pyaardio.list。目前只实现了pyaardio.str,接待大家提bug
下载库的代码可以到上一篇文章里(
aardio教程) 搭建自己的扩展库仓库
)的扩展库下载,大概在上篇文章里的github也能看到完整代码,。
Python字符串方法
简单利用
import console;
import pyaardio.str;
var s0 = pyaardio.str("你好");
console.log("center: " , s0.center(10, "#"));
var s1 = pyaardio.str("swafdrerswfdccswwscsasw");
console.log("count: " , s1.count("sw"));
console.log("endswith: ", s1.endswith("sw"))
console.log("find: ", s1.find("ers"))
console.pause(true);
复制代码
详细实现
首先定义一个类:
namespace pyaardio;
class str{
ctor(s){
this.rawStr = s;
}
@_metaProperty;
}
复制代码
这里只给前几个方法的详细实现,不然文章就太长了,感兴趣的可以看库的代码
capitalize()
功能:将字符串的第一个字符转换为大写,其余字符转换为小写
capitalize = function(){
var ss = string.trimleft(owner.rawStr);
var s1 = string.slice(ss,1,1,true); // 取第一个字符
var s0 = string.slice(ss,2,,true); // 取后面的字符
var newStr = table.clone(owner); // 因为无法在内部实例化pyaardio.str类,所以只能拷贝自身
// 第一个字符串大写,后面小写
newStr.rawStr = string.upper(s1) + string.lower(s0);
return newStr;
};
复制代码
casefold()
功能: 将字符串转换为小写,用于不区分大小写的匹配
这里我就当它是lower来实现:
casefold = function(){
var newStr = table.clone(owner);
newStr.rawStr = string.lower(owner.rawStr);
return newStr;
};
复制代码
center(width, fillchar)
功能: 将字符串居中,并利用指定字符添补至长度width
center = function(width, fillchar=" "){
var ss = owner.rawStr;
var len = string.len(ss);
// 如果fillchar类型也是pyaardio.str,则取它的实际字符串
if(type(fillchar) == type(owner)) fillchar = fillchar.rawStr;
// 如果fillchar给定的不是字符串或长度不等于1
if(type(fillchar) != type.string || string.len(fillchar) != 1) return;
if(!len){ // 如果本身自己就是空字符串,就返回width个fillchar字符
var newStr = table.clone(owner);
newStr.rawStr = fillchar;
return newStr*width;
}
if(width <= len){
return owner;
}
var paddingSize = width - len;
// 计算左右需要填充的长度
var leftPaddingSize = ..math.floor(paddingSize/2);
var rightPaddingSize = paddingSize - leftPaddingSize;
// 拼接字符串
var leftStr = table.clone(owner);
leftStr.rawStr = fillchar;
var rightStr = table.clone(owner);
rightStr.rawStr = fillchar;
return leftStr*leftPaddingSize + owner + rightStr*rightPaddingSize;
};
复制代码
其他方法
format(*args, kwargs): 格式化字符串, 我只实现{变量}和{0}两种格式
format_map(mapping): 利用字典来格式化字符串
index(sub, start=..., end=...): 和find类似,但找不到子字符串时会抛出ValueError, aardio中我实现和find一样
isalnum(): 检查字符串是否由字母和数字组成
isalpha(): 检查字符串是否只包含字母
isascii(): 检查字符串是否只包含ASCII字符
isdecimal(): 检查字符串是否只包含十进制字符
isdigit(): 检查字符串是否只由数字组成
isidentifier(): 检查字符串是否是有效的标识符名
islower(): 检查字符串中全部字母是否都是小写
isnumeric(): 检查字符串中是否全部字符都是数字字符
isprintable(): 检查字符串中全部字符是否都是可打印的
isspace():检查字符串是否只包含空缺字符
istitle(): 检查字符串是否为标题化的(全部单词的首字母大写,其余字母小写)
isupper(): 检查字符串中的全部字母是否都是大写
join(iterable): 将iterable中的字符串归并成一个字符串
ljust(width, fillchar): 返回左对齐字符串,并利用指定字符添补至长度width
lower(): 转换字符串中全部大写字符为小写
lstrip(chars): 移除字符串左边的指定字符集合
maketrans(intab, outtab): 创建字符映射的转换表
partition(sep): 根据分隔符将字符串分为三部分:sep前面的、sep、sep后面的
replace(old, new [, count]): 将字符串中的old替换成new,如果指定count,则替换不超过count次
rfind(sub, start=..., end=...): 从右侧开始查找sub在字符串里的第一个出现位置,找不到时返回-1
rindex(sub, start=..., end=...): 从右侧开始查找sub在字符串中的第一个出现位置,与rfind相似,但找不到时会抛出ValueError
rjust(width, fillchar): 返回右对齐字符串,并利用指定字符添补至长度width
rpartition(sep): 与partition相似,但是从右侧开始
rsplit(sub,count): 从字符串的末尾开始,按照指定的分隔符分割字符串
rstrip(sub): 删除字符串末尾的空格或指定字符, 注意sub指定的是字符集,比如sub="ab"则是指末尾全部的a和全部的b,而不是一个团体
split(sub,count): 从字符串的开头开始,按照指定的分隔符分割字符串
splitlines(sub,count): 按照行('\r', '\r\n', '\n')分割字符串
startswith(sub): 检查字符串是否以指定的前缀开始
strip(sub): 删除字符串前后的空格或指定字符
swapcase(): 将字符串中的小写字母转换为大写,大写字母转换为小写
title(): 将字符串中每个单词的首字母转换为大写
translate(tab): 根据给定的转换表替换字符串中的字符
upper(): 将字符串中的全部小写字母转换为大写字母
zfill(): 在数字字符串的左边添补零,直到达到指定的长度
本文由博客一文多发平台
OpenWrite
发布!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4