截取字符串;从一个字符串中提取出一部分子串的方法或函数;Java(Substring )python(slice)C++(substr)C(strcpy)......

        今天重新复习一下从一个字符串中提取部分字符的方法或是函数的方法

        截取字符串在许多地方还是比较常用的;各位学生或初学者也至少要大致了解一下吧;

        首先说下 Java 中的 Substring:

Substring 是用来从一个字符串中提取出一部分子串的方法或函数。它的作用主要有几个方面:

  1. 提取子串:substring 可以根据指定的起始位置和结束位置(或者起始位置和长度)从原始字符串中截取出一段子串。这允许你从一个较长的字符串中获取想要的部分,以便后续处理或显示。

  2. 字符串处理:在字符串处理和分析中,substring 很常用。例如,你可以利用它来解析数据、提取关键信息或对字符串进行格式化。

  3. 子串比较:有时候需要比较两个字符串的一部分是否相同。通过 substring,可以方便地提取需要比较的部分,然后进行比较操作。

  4. 字符串拼接:在某些情况下,你可能需要将一个字符串的一部分与另一个字符串拼接起来。使用 substring 可以方便地提取原字符串的一部分,并将其与其他字符串连接起来。

总之,substring 提供了一种简便的方式来操作字符串,使得你可以根据需要获取字符串的特定部分,从而更有效地进行字符串处理和操作。

🙋‍♂️:那 substring 是不是 Java 独有的呢?其它语言。例如 python 可以用这个吗?

💁:那首先 substring 这个是 Java 自己独有的吗?其实不完全是。概念上,substring 是一个普遍存在于多种编程语言和字符串处理库中的功能。不同编程语言和库可能有略微不同的实现方式或语法,但基本的 substring 功能(即从一个字符串中提取部分子串)在大多数主流编程语言中都有类似的实现。也即是说 python 上用不了 substring 但是他是有自己的可以用。而在 Java 中,substring 是 String 类的一个方法,用于截取字符串的一部分。它可以通过指定起始索引和结束索引(或者起始索引和长度)来操作字符串。

        例如:

String str = "Hello, world!";
String substr = str.substring(7); // "world!"
String substr2 = str.substring(0, 5); // "Hello"

        这些方法可以帮助我们从字符串中提取我们需要的部分,是 Java 中处理字符串的常见操作之一。

        总结来说,substring 并非 Java 独有的功能,而是一种通用的字符串操作方法,几乎所有主流编程语言都提供类似的功能。

        在上面这个例子当中就是它的两种常见的用法:

  • substring(int beginIndex):从指定的索引 beginIndex 开始,截取到字符串末尾。
  • substring(int beginIndex, int endIndex):从指定的 beginIndex 开始,截取到 endIndex 之前的位置。

Python 的字符串切片(slice)

        在 Python 中,没有 substring 方法,而是使用切片(slice)来截取字符串的一部分。切片的语法是 str[start:end],其中 start 是起始索引,end 是结束索引(不包括)。

s = "Hello, world!"
substr1 = s[7:]  # "world!"
substr2 = s[0:5]  # "Hello"

        这里的 s[7:] 表示从索引 7 开始到字符串末尾的子串,s[0:5] 表示从索引 0 开始到索引 5(不包括索引 5)的子串。

 JavaScript 中的 substring

        在 JavaScript 中,substring 方法用于提取字符串的一部分,接受一个起始索引和一个结束索引(不包括)。

let str = "Hello, world!";
let substr1 = str.substring(7);  // "world!"
let substr2 = str.substring(0, 5);  // "Hello"

C++ 中的 substr

        在 C++ 中,substr 方法用于从 std::string 中提取一个子串,它接受一个起始位置和一个长度作为参数。

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str = "Hello, world!";
    string substr1 = str.substr(7);  // "world!"
    string substr2 = str.substr(0, 5);  // "Hello"

    cout << substr1 << endl;
    cout << substr2 << endl;

    return 0;
}

C语言的用法

        在 C 语言中,可以使用标准库 <string.h> 中的函数来实现类似于 substring 的功能。具体来说,可以使用 strcpystrncpymemcpy 函数来从一个字符串复制部分内容到另一个字符串或缓冲区中。这些函数的选择取决于你需要的精确功能和性能要求。

        1. 使用 strcpy 函数

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, world!";
    char substr[10];  // 用于存储子串的缓冲区

    // 从索引 7 开始复制子串到 substr 中
    strcpy(substr, str + 7);

    printf("Substring: %s\n", substr);  // 输出 "world!"

    return 0;
}

2. 使用 strncpy 函数

    strncpy 函数可以复制指定长度的子串到另一个字符串中,可以避免超出目标缓冲区的长度。

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, world!";
    char substr[10];  // 用于存储子串的缓冲区

    // 从索引 0 开始复制前 5 个字符到 substr 中
    strncpy(substr, str, 5);
    substr[5] = '\0';  // 手动添加字符串结尾的 null 字符

    printf("Substring: %s\n", substr);  // 输出 "Hello"

    return 0;
}

3. 使用 memcpy 函数

     memcpy 函数可以从一个字符串的指定位置开始复制指定长度的内容到另一个位置,适用于更灵活的复制需求。

#include <stdio.h>
#include <string.h>

int main() {
    char str[] = "Hello, world!";
    char substr[10];  // 用于存储子串的缓冲区

    // 从索引 7 开始复制 6 个字符到 substr 中
    memcpy(substr, str + 7, 6);
    substr[6] = '\0';  // 手动添加字符串结尾的 null 字符

    printf("Substring: %s\n", substr);  // 输出 "world!"

    return 0;
}

       

         在 C 语言中,并没有直接的 substring 函数可供使用,而是通过 strcpystrncpymemcpy 等函数来实现类似功能。这些函数需要手动控制起始位置和长度,同时确保目标缓冲区有足够的空间来存储子串。选择合适的函数取决于具体的需求,如复制方式、性能和处理空字符等。

今天就暂时讲到这里了;如果后面还有其它的再更新;大家也可以在评论区发表自己的看法和用法;

如果文章对你有帮助,记得 点赞、收藏、关注👍⭐🧧

  • 34
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript,可以使用substring()方法截取字符串。该方法有两个参数,分别表示截取的起始位置和结束位置(不包括结束位置的字符)。如果省略第二个参数,则截取到字符串的末尾。例如: var s = "http://c.biancheng.net/index.html"; var a = s.indexOf("c"); var b = s.indexOf("/", a); var c = s.substring(a,b); var d = s.slice(a,b); 通过上述代码,使用substring()方法可以截取到字符串以第一个参数指定的字符为起点,到第二个参数指定的字符为终点(不包括终点字符)的子串。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [JS截取字符串(3种方法)](https://blog.csdn.net/lxw1844912514/article/details/123899878)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [javascript截取字符串(通过substring实现并支持英文混合)](https://download.csdn.net/download/weixin_38613154/13058467)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值