菜鸟科技网

substr命令怎么用?

substr 是一个用于从字符串中提取子字符串(substring)的函数,它的名字来源于 "substring" 的缩写,几乎所有主流的编程语言都支持这个功能,尽管具体的语法和参数名称可能略有不同。

substr命令怎么用?-图1
(图片来源网络,侵删)

核心概念

substr 的核心思想是:给定一个原始字符串,你告诉它从哪个位置开始,以及要截取多长的字符,它会返回一个新的字符串。


语法和参数

substr 函数通常接受三个参数,但最核心的是前两个。

通用语法:

// 这是 JavaScript 中的语法,非常具有代表性
new_string = original_string.substr(start_index, length);

参数详解:

substr命令怎么用?-图2
(图片来源网络,侵删)
  1. start_index (起始索引):

    • 指定从哪个位置开始截取。
    • 重要: 在绝大多数语言(如 JavaScript, PHP, C++)中,索引都是从 0 开始的,也就是说,字符串的第一个字符的索引是 0,第二个是 1,以此类推。
    • start_index 是一个负数,它通常表示从字符串的末尾开始倒数。-1 表示最后一个字符,-2 表示倒数第二个字符。
    • start_index 超出了字符串的长度,大多数实现会返回一个空字符串。
  2. length (长度):

    • 指定要截取的字符数量
    • 这是一个可选参数,如果省略,函数会从 start_index 开始,一直截取到字符串的末尾。
    • length 为 0 或负数,通常会返回一个空字符串。
    • 如果指定的 length 导致截取超出了字符串的末尾,函数会自动截取到字符串末尾而不会报错。

在不同编程语言中的示例

虽然核心思想相同,但不同语言的细节有差异。

a) JavaScript

JavaScript 的 substr 方法是 String 对象的一个方法。

substr命令怎么用?-图3
(图片来源网络,侵删)
let str = "Hello, World!";
// 示例 1: 从索引 7 开始,截取 5 个字符
let sub1 = str.substr(7, 5); // "World"
console.log(sub1);
// 示例 2: 省略 length,从索引 7 开始截取到末尾
let sub2 = str.substr(7); // "World!"
console.log(sub2);
// 示例 3: 使用负数的 start_index (从末尾倒数)
// -6 表示从倒数第6个字符开始,即 'W'
let sub3 = str.substr(-6); // "World!"
console.log(sub3);
// 示例 4: start_index 超出范围
let sub4 = str.substr(20); // 返回空字符串 ""
console.log(sub4);
// 示例 5: length 为负数
let sub5 = str.substr(7, -2); // 返回空字符串 ""
console.log(sub5);

注意: 在 JavaScript 中,substr 已被标记为遗留方法 (legacy),不推荐在新代码中使用,推荐使用更现代、更符合逻辑的 substring()slice() 方法。

  • substring(start, end): 接受开始和结束索引(不包含结束索引)。
  • slice(start, end): 功能与 substring 类似,但支持负数索引,并且行为更一致。

b) PHP

PHP 中 substr 是一个内置函数。

<?php
$str = "Hello, World!";
// 示例 1: 从索引 7 开始,截取 5 个字符
$sub1 = substr($str, 7, 5); // "World"
echo $sub1 . "\n";
// 示例 2: 省略 length,从索引 7 开始截取到末尾
$sub2 = substr($str, 7); // "World!"
echo $sub2 . "\n";
// 示例 3: 使用负数的 start_index
// -6 表示从倒数第6个字符开始
$sub3 = substr($str, -6); // "World!"
echo $sub3 . "\n";
// 示例 4: start_index 为负,length 也为正
// 从倒数第6个字符开始,截取2个字符
$sub4 = substr($str, -6, 2); // "Wo"
echo $sub4 . "\n";
?>

c) Python

Python 字符串没有名为 substr 的方法,而是使用切片语法 [:],其功能与 substr 类似但更强大。

str = "Hello, World!"
# 示例 1: 从索引 7 开始,截取到索引 12 (不包含12)
# 等效于 substr(7, 5)
sub1 = str[7:12]
print(sub1)  # "World"
# 示例 2: 从索引 7 开始,截取到末尾
# 等效于 substr(7)
sub2 = str[7:]
print(sub2)  # "World!"
# 示例 3: 使用负数索引
# -6 表示倒数第6个字符
sub3 = str[-6:]
print(sub3)  # "World!"
# 示例 4: 截取最后5个字符
sub4 = str[-5:]
print(sub4)  # "rld!"

substringslice 的区别 (以 JavaScript 为例)

理解 substr 与其他方法的区别很重要,尤其是在 JavaScript 中。

方法 语法 描述 示例 str = "Hello"
substr str.substr(start, length) start 开始,提取 length 个字符。 str.substr(1, 3) -> "ell"
substring str.substring(start, end) 提取从 startend (不包含 end) 之间的字符。 str.substring(1, 3) -> "el"
slice str.slice(start, end) substring 类似,但支持负数索引,且行为更一致。 str.slice(1, 3) -> "el"
str.slice(-3) -> "llo"

  • substr 是什么? 一个用于从字符串中提取子串的函数。
  • 核心参数是什么?
    1. start_index: 从哪里开始(从0开始计数)。
    2. length: 截取多长(可选,默认到末尾)。
  • 负索引怎么用? 通常表示从字符串末尾倒数(如 -1 是最后一个字符)。
  • 在现代编程语言中地位如何?
    • JavaScript 中,substr 是遗留方法,推荐使用 slice()substring()
    • PHP 中,substr 仍然是常用且推荐的方法。
    • Python 中,没有 substr 函数,使用切片语法 [:]

希望这个详细的解释能帮助你完全理解 substr 命令!

分享:
扫描分享到社交APP
上一篇
下一篇