mirror of
https://github.com/danielstjules/Stringy.git
synced 2025-08-12 00:04:11 +02:00
Renamed count to countSubstr, implemented Countable interface
This commit is contained in:
22
README.md
22
README.md
@@ -15,7 +15,7 @@ Compatible with PHP 5.3+. Inspired by underscore.string.js.
|
|||||||
* [chars](#chars)
|
* [chars](#chars)
|
||||||
* [collapseWhitespace](#collapsewhitespace)
|
* [collapseWhitespace](#collapsewhitespace)
|
||||||
* [contains](#contains)
|
* [contains](#contains)
|
||||||
* [count](#count)
|
* [countSubstr](#countsubstr)
|
||||||
* [create](#create)
|
* [create](#create)
|
||||||
* [dasherize](#dasherize)
|
* [dasherize](#dasherize)
|
||||||
* [endsWith](#endswith)
|
* [endsWith](#endswith)
|
||||||
@@ -144,6 +144,14 @@ foreach ($stringy as $pos => $char) {
|
|||||||
// array('F', 'ò', 'ô', ' ', 'B', 'à', 'ř')
|
// array('F', 'ò', 'ô', ' ', 'B', 'à', 'ř')
|
||||||
```
|
```
|
||||||
|
|
||||||
|
It also implements the `countable` interface, enabling the use of `count()` to
|
||||||
|
retrieve the number of characters in the string, given the encoding:
|
||||||
|
|
||||||
|
``` php
|
||||||
|
$stringy = S::create('Fòô', 'UTF-8');
|
||||||
|
count($stringy); // 3
|
||||||
|
```
|
||||||
|
|
||||||
## Methods
|
## Methods
|
||||||
|
|
||||||
In the list below, any static method other than S::create refers to a method in
|
In the list below, any static method other than S::create refers to a method in
|
||||||
@@ -157,7 +165,7 @@ the original.
|
|||||||
|
|
||||||
$stringy->at(int $index)
|
$stringy->at(int $index)
|
||||||
|
|
||||||
S::substr(int $index [, string $encoding ])
|
S::at(int $index [, string $encoding ])
|
||||||
|
|
||||||
Returns the character of the string at $index, with indexes starting at 0.
|
Returns the character of the string at $index, with indexes starting at 0.
|
||||||
|
|
||||||
@@ -224,19 +232,19 @@ S::create('Ο συγγραφέας είπε', 'UTF-8')->contains('συγγραφ
|
|||||||
S::contains('Ο συγγραφέας είπε', 'συγγραφέας', 'UTF-8'); // true
|
S::contains('Ο συγγραφέας είπε', 'συγγραφέας', 'UTF-8'); // true
|
||||||
```
|
```
|
||||||
|
|
||||||
#### count
|
#### countSubstr
|
||||||
|
|
||||||
$stringy->count(string $substring [, boolean $caseSensitive = true ])
|
$stringy->countSubstr(string $substring [, boolean $caseSensitive = true ])
|
||||||
|
|
||||||
S::count(string $str, string $substring [, boolean $caseSensitive = true [, string $encoding ]])
|
S::countSubstr(string $str, string $substring [, boolean $caseSensitive = true [, string $encoding ]])
|
||||||
|
|
||||||
Returns the number of occurrences of $substring in the given string.
|
Returns the number of occurrences of $substring in the given string.
|
||||||
By default, the comparison is case-sensitive, but can be made insensitive
|
By default, the comparison is case-sensitive, but can be made insensitive
|
||||||
by setting $caseSensitive to false.
|
by setting $caseSensitive to false.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
S::create('Ο συγγραφέας είπε', 'UTF-8')->count('α');
|
S::create('Ο συγγραφέας είπε', 'UTF-8')->countSubstr('α');
|
||||||
S::count('Ο συγγραφέας είπε', 'α', 'UTF-8'); // 2
|
S::countSubstr('Ο συγγραφέας είπε', 'α', 'UTF-8'); // 2
|
||||||
```
|
```
|
||||||
|
|
||||||
#### create
|
#### create
|
||||||
|
@@ -739,10 +739,11 @@ class StaticStringy
|
|||||||
* @param string $encoding The character encoding
|
* @param string $encoding The character encoding
|
||||||
* @return int The number of $substring occurrences
|
* @return int The number of $substring occurrences
|
||||||
*/
|
*/
|
||||||
public static function count($str, $substring, $caseSensitive = true,
|
public static function countSubstr($str, $substring, $caseSensitive = true,
|
||||||
$encoding = null)
|
$encoding = null)
|
||||||
{
|
{
|
||||||
return Stringy::create($str, $encoding)->count($substring, $caseSensitive);
|
return Stringy::create($str, $encoding)
|
||||||
|
->countSubstr($substring, $caseSensitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace Stringy;
|
namespace Stringy;
|
||||||
|
|
||||||
class Stringy implements \IteratorAggregate
|
class Stringy implements \Countable, \IteratorAggregate
|
||||||
{
|
{
|
||||||
private $str;
|
private $str;
|
||||||
|
|
||||||
@@ -64,6 +64,16 @@ class Stringy implements \IteratorAggregate
|
|||||||
return $this->str;
|
return $this->str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the length of the string, implementing the countable interface.
|
||||||
|
*
|
||||||
|
* @return int The number of characters in the string, given the encoding
|
||||||
|
*/
|
||||||
|
public function count()
|
||||||
|
{
|
||||||
|
return $this->length();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a new ArrayIterator, thus implementing the IteratorAggregate
|
* Returns a new ArrayIterator, thus implementing the IteratorAggregate
|
||||||
* interface. The ArrayIterator's constructor is passed an array of chars
|
* interface. The ArrayIterator's constructor is passed an array of chars
|
||||||
@@ -1161,16 +1171,16 @@ class Stringy implements \IteratorAggregate
|
|||||||
* @param bool $caseSensitive Whether or not to enforce case-sensitivity
|
* @param bool $caseSensitive Whether or not to enforce case-sensitivity
|
||||||
* @return int The number of $substring occurrences
|
* @return int The number of $substring occurrences
|
||||||
*/
|
*/
|
||||||
public function count($substring, $caseSensitive = true)
|
public function countSubstr($substring, $caseSensitive = true)
|
||||||
{
|
{
|
||||||
if (!$caseSensitive) {
|
if ($caseSensitive) {
|
||||||
$str = mb_strtoupper($this->str, $this->encoding);
|
return mb_substr_count($this->str, $substring, $this->encoding);
|
||||||
$substring = mb_strtoupper($substring, $this->encoding);
|
|
||||||
|
|
||||||
return mb_substr_count($str, $substring, $this->encoding);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return mb_substr_count($this->str, $substring, $this->encoding);
|
$str = mb_strtoupper($this->str, $this->encoding);
|
||||||
|
$substring = mb_strtoupper($substring, $this->encoding);
|
||||||
|
|
||||||
|
return mb_substr_count($str, $substring, $this->encoding);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -807,7 +807,7 @@ abstract class CommonTest extends PHPUnit_Framework_TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function countProvider()
|
public function countSubstrProvider()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
array(0, '', 'foo'),
|
array(0, '', 'foo'),
|
||||||
|
@@ -565,12 +565,12 @@ class StaticStringyTestCase extends CommonTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider countProvider()
|
* @dataProvider countSubstrProvider()
|
||||||
*/
|
*/
|
||||||
public function testCount($expected, $str, $substring, $caseSensitive = true,
|
public function testCountSubstr($expected, $str, $substring,
|
||||||
$encoding = null)
|
$caseSensitive = true, $encoding = null)
|
||||||
{
|
{
|
||||||
$result = S::count($str, $substring, $caseSensitive, $encoding);
|
$result = S::countSubstr($str, $substring, $caseSensitive, $encoding);
|
||||||
$this->assertInternalType('int', $result);
|
$this->assertInternalType('int', $result);
|
||||||
$this->assertEquals($expected, $result);
|
$this->assertEquals($expected, $result);
|
||||||
}
|
}
|
||||||
|
@@ -70,6 +70,13 @@ class StringyTestCase extends CommonTest
|
|||||||
$this->assertEquals('FÒÔ bÀŘ', $result);
|
$this->assertEquals('FÒÔ bÀŘ', $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testCount()
|
||||||
|
{
|
||||||
|
$stringy = S::create('Fòô', 'UTF-8');
|
||||||
|
$this->assertEquals(3, $stringy->count());
|
||||||
|
$this->assertEquals(3, count($stringy));
|
||||||
|
}
|
||||||
|
|
||||||
public function testGetIterator()
|
public function testGetIterator()
|
||||||
{
|
{
|
||||||
$stringy = S::create('Fòô Bàř', 'UTF-8');
|
$stringy = S::create('Fòô Bàř', 'UTF-8');
|
||||||
@@ -721,13 +728,13 @@ class StringyTestCase extends CommonTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider countProvider()
|
* @dataProvider countSubstrProvider()
|
||||||
*/
|
*/
|
||||||
public function testCount($expected, $str, $substring, $caseSensitive = true,
|
public function testCountSubstr($expected, $str, $substring,
|
||||||
$encoding = null)
|
$caseSensitive = true, $encoding = null)
|
||||||
{
|
{
|
||||||
$stringy = S::create($str, $encoding);
|
$stringy = S::create($str, $encoding);
|
||||||
$result = $stringy->count($substring, $caseSensitive);
|
$result = $stringy->countSubstr($substring, $caseSensitive);
|
||||||
$this->assertInternalType('int', $result);
|
$this->assertInternalType('int', $result);
|
||||||
$this->assertEquals($expected, $result);
|
$this->assertEquals($expected, $result);
|
||||||
$this->assertEquals($str, $stringy);
|
$this->assertEquals($str, $stringy);
|
||||||
|
Reference in New Issue
Block a user