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字符串方法


简单利用
  1. import console;
  2. import pyaardio.str;
  3. var s0 = pyaardio.str("你好");
  4. console.log("center: " , s0.center(10, "#"));
  5. var s1 = pyaardio.str("swafdrerswfdccswwscsasw");
  6. console.log("count: " , s1.count("sw"));
  7. console.log("endswith: ", s1.endswith("sw"))
  8. console.log("find: ", s1.find("ers"))
  9. console.pause(true);
复制代码
详细实现

首先定义一个类:
  1. namespace pyaardio;
  2. class str{
  3.         ctor(s){
  4.                 this.rawStr = s;
  5.         }
  6.         @_metaProperty;
  7. }
复制代码
这里只给前几个方法的详细实现,不然文章就太长了,感兴趣的可以看库的代码
capitalize()

功能:将字符串的第一个字符转换为大写,其余字符转换为小写
  1. capitalize = function(){
  2.     var ss = string.trimleft(owner.rawStr);
  3.     var s1 = string.slice(ss,1,1,true); // 取第一个字符
  4.     var s0 = string.slice(ss,2,,true); // 取后面的字符
  5.     var newStr = table.clone(owner); // 因为无法在内部实例化pyaardio.str类,所以只能拷贝自身
  6.     // 第一个字符串大写,后面小写
  7.     newStr.rawStr = string.upper(s1) + string.lower(s0);
  8.     return newStr;
  9. };
复制代码
casefold()

功能: 将字符串转换为小写,用于不区分大小写的匹配
这里我就当它是lower来实现:
  1. casefold = function(){
  2.     var newStr = table.clone(owner);
  3.     newStr.rawStr = string.lower(owner.rawStr);
  4.     return newStr;
  5. };
复制代码
center(width, fillchar)

功能: 将字符串居中,并利用指定字符添补至长度width
  1. center = function(width, fillchar=" "){
  2.     var ss = owner.rawStr;
  3.     var len = string.len(ss);
  4.     // 如果fillchar类型也是pyaardio.str,则取它的实际字符串
  5.     if(type(fillchar) == type(owner)) fillchar = fillchar.rawStr;
  6.     // 如果fillchar给定的不是字符串或长度不等于1
  7.     if(type(fillchar) != type.string || string.len(fillchar) != 1) return;
  8.     if(!len){ // 如果本身自己就是空字符串,就返回width个fillchar字符
  9.                 var newStr = table.clone(owner);
  10.                 newStr.rawStr = fillchar;
  11.                 return newStr*width;
  12.     }
  13.     if(width <= len){
  14.             return owner;
  15.     }
  16.     var paddingSize = width - len;
  17.     // 计算左右需要填充的长度
  18.     var leftPaddingSize = ..math.floor(paddingSize/2);
  19.     var rightPaddingSize = paddingSize - leftPaddingSize;
  20.     // 拼接字符串
  21.     var leftStr = table.clone(owner);
  22.     leftStr.rawStr = fillchar;
  23.     var rightStr = table.clone(owner);
  24.     rightStr.rawStr = fillchar;
  25.     return leftStr*leftPaddingSize + owner + rightStr*rightPaddingSize;
  26. };
复制代码
其他方法

本文由博客一文多发平台 OpenWrite 发布!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4