From de79ae7f35eba45e8a5c26d875ead93b08290553 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 3 Mar 2020 14:08:48 +0100 Subject: [PATCH] [String] Add AbstractString::containsAny() --- .../Component/String/AbstractString.php | 8 ++++++ src/Symfony/Component/String/CHANGELOG.md | 1 + .../String/Tests/AbstractAsciiTestCase.php | 26 +++++++++++++++++-- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/String/AbstractString.php b/src/Symfony/Component/String/AbstractString.php index c11a93062815..ffa5e2fb68cc 100644 --- a/src/Symfony/Component/String/AbstractString.php +++ b/src/Symfony/Component/String/AbstractString.php @@ -254,6 +254,14 @@ public function collapseWhitespace(): self return $str; } + /** + * @param string|string[] $needle + */ + public function containsAny($needle): bool + { + return null !== $this->indexOf($needle); + } + /** * @param string|string[] $suffix */ diff --git a/src/Symfony/Component/String/CHANGELOG.md b/src/Symfony/Component/String/CHANGELOG.md index 492ad9bd1697..150c37dd9b94 100644 --- a/src/Symfony/Component/String/CHANGELOG.md +++ b/src/Symfony/Component/String/CHANGELOG.md @@ -11,6 +11,7 @@ CHANGELOG * added the `s()` helper method to get either an `UnicodeString` or `ByteString` instance, depending of the input string UTF-8 compliancy * added `$cut` parameter to `Symfony\Component\String\AbstractString::truncate()` + * added `AbstractString::containsAny()` 5.0.0 ----- diff --git a/src/Symfony/Component/String/Tests/AbstractAsciiTestCase.php b/src/Symfony/Component/String/Tests/AbstractAsciiTestCase.php index bfc9b1f29b72..b333c74a252b 100644 --- a/src/Symfony/Component/String/Tests/AbstractAsciiTestCase.php +++ b/src/Symfony/Component/String/Tests/AbstractAsciiTestCase.php @@ -55,6 +55,26 @@ public static function provideBytesAt(): array ]; } + /** + * @dataProvider provideIndexOf + */ + public function testContainsAny(?int $result, string $string, $needle) + { + $instance = static::createFromString($string); + + $this->assertSame(null !== $instance->indexOf($needle), $instance->containsAny($needle)); + } + + /** + * @dataProvider provideIndexOfIgnoreCase + */ + public function testContainsAnyIgnoreCase(?int $result, string $string, $needle) + { + $instance = static::createFromString($string); + + $this->assertSame(null !== $instance->ignoreCase()->indexOf($needle), $instance->ignoreCase()->containsAny($needle)); + } + public function testUnwrap() { $expected = ['hello', 'world']; @@ -161,7 +181,7 @@ public static function provideLength(): array /** * @dataProvider provideIndexOf */ - public function testIndexOf(?int $result, string $string, string $needle, int $offset) + public function testIndexOf(?int $result, string $string, $needle, int $offset) { $instance = static::createFromString($string); @@ -180,6 +200,7 @@ public static function provideIndexOf(): array [null, 'abc', 'a', -1], [null, '123abc', 'B', -3], [null, '123abc', 'b', 6], + [0, 'abc', ['a', 'e'], 0], [0, 'abc', 'a', 0], [1, 'abc', 'b', 1], [2, 'abc', 'c', 1], @@ -191,7 +212,7 @@ public static function provideIndexOf(): array /** * @dataProvider provideIndexOfIgnoreCase */ - public function testIndexOfIgnoreCase(?int $result, string $string, string $needle, int $offset) + public function testIndexOfIgnoreCase(?int $result, string $string, $needle, int $offset) { $instance = static::createFromString($string); @@ -208,6 +229,7 @@ public static function provideIndexOfIgnoreCase(): array [null, 'abc', 'a', -1], [null, 'abc', 'A', -1], [null, '123abc', 'B', 6], + [0, 'ABC', ['a', 'e'], 0], [0, 'ABC', 'a', 0], [0, 'ABC', 'A', 0], [1, 'ABC', 'b', 0],