PHP8 —— New String Helpers

新增了三个字符串函数,str_starts_with, str_ends_with, str_contains, PHP 的函数这么方便,很难想象竟然一直没有这几个。 str_starts_with 判断字符串是否以另一个字符串开头,在PHP7以及之前 $id = 'inv_abcdefgh'; $result = strpos($id, 'inv_') === 0; var_dump($result); // true PHP8 中可以直接这么写 $result = str_starts_with($id, 'inv_'); str_ends_with 判断字符串是否以另外一个字符串结尾,在 PHP7 及之前,比较麻烦,通常是这么写 $id = 'abcd_inv'; $result = strpos(strrev($id), strrev('_inv')) === 0; 或者 $result = substr($id, -1 * strlen('_inv')) === '_inv'; 或者上正则吧 $result = preg_match('/_inv$/', $id) === 1; 看起来都是比较麻烦的。PHP8 里面可以简化成下面这样了 $id = 'abcd_inv'; $result = str_ends_with($id, '_ind'); str_contains 字符串包含,PHP8 之前一般就是 strpos 来实现了 $url = 'https://example?for=bar'; $result = strpos($url, '?') !== FALSE; PHP8 就直接一点 $result = str_contains($url, '?');

Java学习笔记 —— Java 14 新特性 Switch 表达式

Switch 表达式

Java 12和13中已经提供了 switch 表达式,不过是作为预览功能提供,默认情况下未启用。 在Java 14中正式发布了。简单来说,这是一种新的简化形式的switch块,带有case L-> ...标签。大部分情况下,这么写有助于简化代码。 下面举几个🌰。

假设我们有一个描述工作日的枚举。 我们可以使用新的switch表达式编写以下代码:

switch (day) {
    case MONDAY              -> System.out.println("Aweful");
    case TUESDAY, WEDNESDAY  -> System.out.println("Okay");
    case THURSDAY            -> System.out.println("Good");
    case FRIDAY              -> System.out.println("Great");
    case SATURDAY, SUNDAY    -> System.out.println("Awesome");
}

在这里,我们只为每种情况使用一个表达式。 需要注意的是,我们没有使用 break 语句。 我们也可以用新的switch表达式来返回值:

int numLetters = switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> 6;
    case TUESDAY                -> 7;
    case THURSDAY, SATURDAY     -> 8;
    case WEDNESDAY              -> 9;
};

还可以编写多行代码块并使用新关键字yield来返回值:

int result = switch (s) {
    case "Foo" -> 1;
    case "Bar" -> 2;
    default    -> {
        System.out.println("Neither Foo nor Bar, hmmm...");
        yield 0;
    }
};

使用新的开关表达式时,需要牢记一些重要的事情。 例如, 对于所有可能的值,必须有一个匹配的标签; 由于yield现在是关键字,Java14中yield不能为类命名了。

需要了解有关 switch 表达式的更多信息,可以阅读 JEP361。作者提供了许多有关 switch 的信息。

评论

此博客中的热门博文

D3js Data-binding basics

JavaScript 数据类型

Vue3新特性(1) —— Vite