danielstjules/sliceable-stringy

PHP中的Python字符串切片

1.0.0 2014-02-19 03:28 UTC

This package is not auto-updated.

Last update: 2024-09-14 15:52:44 UTC


README

PHP中的Python字符串切片。该类扩展自Stringy,并实现了ArrayAccess接口。

Build Status

安装

如果您使用Composer管理依赖项,您可以在您的composer.json文件中包含以下内容

"require": {
    "danielstjules/sliceable-stringy": "dev-master"
}

然后,运行composer updatephp 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

用单个库切割两种语言。