danielstjules / sliceable-stringy
PHP中的Python字符串切片
1.0.0
2014-02-19 03:28 UTC
Requires
- php: >=5.4.0
- danielstjules/stringy: 1.4.x
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-14 15:52:44 UTC
README
PHP中的Python字符串切片。该类扩展自Stringy,并实现了ArrayAccess
接口。
安装
如果您使用Composer管理依赖项,您可以在您的composer.json文件中包含以下内容
"require": {
"danielstjules/sliceable-stringy": "dev-master"
}
然后,运行composer update
或php composer.phar update
之后,您可以使用Composer的自动加载器加载该类
require 'vendor/autoload.php';
概述
SliceableStringy
在传递包含一个或多个冒号的字符串偏移量时返回一个切片。最多可以传递3个参数:'start:stop:step'
。开始,表示切片的起始索引,如果步长为正,则默认为字符串的第一个字符,如果步长为负,则默认为最后一个字符。停止,表示范围的排他边界,如果步长为正,则默认为字符串的长度,如果步长为负,则默认在第一个字符之前。步长允许用户仅包含结果中的第n个字符,其符号确定索引采样的方向。
就像Stringy
一样,SliceableStringy
是不可变的,并且每次切片都返回一个新的实例。
示例
use SliceableStringy\SliceableStringy as S; $sliceable = S::create('Fòô Bàř', 'UTF-8');
特定偏移量
$sliceable[1]; // 'ò' $sliceable['-2']; // 'à'
使用开始和停止
$sliceable[':']; // 'Fòô Bàř' $sliceable['4:']; // 'Bàř' $sliceable['4:6']; // 'Bà'
负索引
$sliceable['-1:']; // 'ř' $sliceable[':-1']; // 'Fòô Bà' $sliceable['-3:6']; // 'Bà' $sliceable['2:-6']; // ''
传递一个步长
$sliceable['::-1']; // 'řàB ôòF' $sliceable['::2']; // 'FôBř' $sliceable['-3::-2']; // 'BôF'
可能的异常
$sliceable[20]; // OutOfBoundsException $sliceable['1:2:3:4']; // InvalidArgumentException, too many slice args $sliceable['::0']; // InvalidArgumentException, step cannot equal 0
实现一致性
spec/SliceableStringySpec.php
中的多个规范断言该库模仿Python的本地切片表示法。除了少量单元测试外,还使用了spec/fixtures/resultGenerator.py
来生成测试用例。检查expectedResults.csv
中的每个切片,以确保正确功能。
TL;DR
用单个库切割两种语言。