精华内容
下载资源
问答
  • 字符串分割
    千次阅读
    2020-07-26 10:24:38

    php根据字符串分割字符串

    How to split a string by string in PHP? For example,

    如何在PHP中按字符串分割 字符串 ? 例如,

    "a string   separated byspace" =>
    ["a", "string", "separated", "by", "space"]
    

    and

    "a,string,separated,by,comma" =>
    ["a", "string", "separated", "by", "comma"]


    The commonly used `explode()` is not enough here because multiple delimiters should be consider as one (such as " ", 3 spaces together, is consider a single delimiter). Instead, the `preg_split()` function can be used to use regular expression to handle such cases.

    此处常用的`explode()`是不够的,因为应将多个定界符视为一个(例如" " ,三个空格在一起,被视为单个定界符)。 相反,`preg_split()`函数可用于使用正则表达式来处理此类情况。

    One example is as follows.

    一个例子如下。

    $ php -a
    Interactive mode enabled
    
    php > $str = "a string   separated by space";
    php > $splits = preg_split('/\s+/', $str);
    php > print_r($splits);
    Array
    (
        [0] => a
        [1] => string
        [2] => separated
        [3] => by
        [4] => space
    )
    php > 
    

    For another example,

    再举一个例子

    
    php > $str = "a,string,separated,by,comma";
    php > $splits = preg_split('/,+/', $str);
    php > print_r($splits);
    Array
    (
        [0] => a
        [1] => string
        [2] => separated
        [3] => by
        [4] => comma
    )
    

    翻译自: https://www.systutorials.com/how-to-split-a-string-by-string-in-php/

    php根据字符串分割字符串

    更多相关内容
  • 利用mysql中提供的所有函数,组成的一个存储过程。此存储过程主要是将传入的字符串分割为多个值,单个列。
  • c语言实现字符串分割split(), 实现C语言实现按分隔符来截取字符串
  • java字符串分割方法

    万次阅读 2021-11-17 22:37:51
    java 分割字符串split()方法 实现功能 编写一个将字符串分段的类,传入:需分段的字符串 与 字符个数(以此个数进行分段),输出:按指定字符个数进行分段后的若干字符串(汉字算单个字符)。 功能实现要求分析 ...

    java 分割字符串split()方法

    实现功能
    编写一个将字符串分段的类,传入:需分段的字符串 与 字符个数(以此个数进行分段),输出:按指定字符个数进行分段后的若干字符串(汉字算单个字符)。

    功能实现要求分析

    • 字符串传入
    • 字符串分段
    • 字符串输出

    实现思路

    Java是一个面向对象设计类语言,自身提供了很多方法帮助我们实现想要的功能。
    那么如何实现字符串传入功能?
    我们需要了解一个Java类----Scanner类,这是一个用于扫描输入文本的新的实用程序。自Java 5版本添加了java.util.Scanner类,它是以前的StringTokenizer和Matcher类之间的某种结合。借助于Scanner,可以针对任何要处理的文本内容编写自定义的语法分析器。
    Scanner

    使用Scanner类需导包 import java.util.Scanner;

    上图显示了Scanner的部分使用格式,sc.next后加数据基本类型。

    Scanner s = new Scanner(System.in);
            String n = s.next();
    

    这是传入字符串的实现代码。

    字符串分割

    对字符串进行操作,自然第一个会想到String类有没有相应的方法来实现分割操作,了解过API或者对Java有了解过的首先会想到String类下的split()方法能够实现这个功能。下面来看看split()方法的使用格式。

            String []a=se.split(",");
            String []b=se.split(",",5);
    

    1.se.split(String sign);
    2.se.split(String sign,int limit);

    第一种是以逗号作为标记分割,也就是sign 为自己指定的分割符,sign可以是任意字符串。
    第二种是在第一种的基础上对分割的字符串数量进行限制。

    显而易见,split()方法有些局限,对于原来字符串的内容有要求。
    如:

     String p = "石家庄-武汉-哈尔滨";
            String []g = p.split("-");
            for(String y : g)
                System.out.println(y);
    

    输出结果

    在这段程序中,分割符为“-”,输出结果也确实达到预期,但也不难发现利用split()分割字符串需要内容带分隔符

    所以我们利用这一特点,不难想到可以先对字符串按间距添加分隔符,然后再使用split()方法来实现分割功能。
    理论上使用一个for循环就能实现,但是字符串是常量,一旦创建,其内容和长度是不可以改变的。所以在这里我们要用到String Buffer或者String Builder类,这两个类提供了修改功能,类似一个容器。
    实现代码如下:

     int m=0;
            for(int i=0;i+m<str.length();i++){
                if(i%l==0) {
                    str.insert(i + m, ",");
                    m++;
                }
            }
    

    代码中l是分割的长度,m是添加分隔符后加1的标记

    在这里插入图片描述
    上图清晰地解释了m的作用,实际上就是更新了下一位分割位置,因为在添加分隔符时长度也在增加(更新)。

    使用split()方法
    对原字符串完成分隔符插入后,新字符串已经带有分隔符并且是在预想的位置上,所以理论上我们就可以使用split()方法完成分割字符串。
    代码如下:

     String se= str.toString();
            String []a=se.split(",");
    

    返回成字符串se,将分割后结果存储到字符串数组a[]中,方便输出

    输出分割结果
    代码如下:

     for(String j:a)
                System.out.println(j);
    

    遍历a[],并输出

    完整代码

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            StringBuilder str = new StringBuilder();
            Scanner s = new Scanner(System.in);
            String n = s.next();
            str.append(n);
            Scanner x = new Scanner(System.in);
            int l = x.nextInt();
            int m=0;
            for(int i=0;i+m<str.length();i++){
                if(i%l==0) {
                    str.insert(i + m, ",");
                    m++;
                }
            }
            String se= str.toString();
            String []a=se.split(",");
            for(String j:a)
                System.out.println(j);
        }
    }
    

    运行结果
    在这里插入图片描述
    在这里插入图片描述

    结语
    制作不易,觉得本文有帮助的支持一下!如有其他问题,可直接私信。

    展开全文
  • C语言 字符串分割

    千次阅读 2020-07-02 12:45:00
    C语言 字符串分割 一、简述 记--字符串分割,strtok()函数的使用例子、自己实现split()函数。 二、例子代码 #include <stdio.h> #include <string.h> /* * 函数:split * 描述:按指定分隔符...

                                                             C语言 字符串分割

     

    一、简述
            记--字符串分割,strtok()函数的使用例子、自己简单实现split()函数。

    二、例子代码

    #include <stdio.h>
    #include <string.h>
     
    /*
     * 函数:split
     * 描述:按指定分隔符分割字符串
     * 参数:
     *		str:要分割的字符串
     *		strLen:要分割的字符串的长度
     * 		splitChar:分隔符
     * 		index:获取第几部分, 1<=index
     *		result:结果字符串, result = str[index-1];
     * 		maxLen:指定结果的最大长度
     * 返回值:
     *		>=0:成功, 结果长度
     * 		其它:失败
     * 例子:
     *		split("11;22;33", 8, ';', 2, result. 16);
     *		结果result是:22.
     */
    int split(const char* str, int strLen, const char* splitChar, int index, char* result, int maxLen)
    {
    	int i = 0;
        int ret = 0;	
    	int findLen = 0;
    	int findFlag = 0;	
    	int startIndex = 0;
    	int splitCharLen = 0;
    	
    	//合法性判断
    	if(NULL == str || NULL == result || NULL == splitChar || index<=0)
    	{
    		return -1;
    	}		
    	splitCharLen = strlen(splitChar);
    	findLen = strLen-splitCharLen;
    	if(findLen<0)
    	{
    		return -2;
    	}	
    	
    	//查找结果的左右分隔符位置
    	for(; i<=findLen && str[i] != '\0'; i++)
    	{
    		if(strncmp(&str[i], splitChar, splitCharLen) == 0)
    		{
    			if(0 == findFlag)//find the left
    			{
    				startIndex++;
    				if(1 == index)//第一个直接返回
    				{
    					strncpy(result, &str[0], i);
    					ret = i;
    					break;
    				}
    				else if(startIndex+1 == index)
    				{
    					startIndex = i;
    					findFlag = 1;
    				}
    			}
    			else//find the right
    			{
    				findFlag = 2;
    				break;
    			}
    		}
    	}	
    	
    	//截取结果
    	if(0 != findFlag && startIndex<strLen-1)
    	{
    		startIndex += splitCharLen;
    		ret = i-startIndex;//结果的字符个数
    		if(ret>maxLen || ret>strLen)
    		{
    			ret = 0;
    		}
    		else if(ret>0)
    		{
    			strncpy(result, &str[startIndex], ret);
    			ret = strlen(result);
    		}
    	}
    	return ret;
    }
     
    int main(void)
    {	
    	{
    		const char* splitChar = ";";
    		printf("\n==========strtok1==========\n");
    		char str1[128] = "Keep;learning;and;study;hard";
    		printf("str1:\"%s\", splitChar:\"%s\"\n", str1, splitChar);
    		
    		char* ptr = strtok(str1, splitChar);
    		for(; ptr != NULL; )
    		{
    			printf("%s\n", ptr);
    			ptr = strtok(NULL, splitChar);
    		}
    		printf("strtok after, str1:%s\n", str1);
    		
    		printf("\n==========split1==========\n");
    		char str2[128] = "Keep;learning;and;study;hard";
    		printf("str2:\"%s\", splitChar:\"%s\"\n", str2, splitChar);
    		int i;
    		int ret = 1;
    		char result[128];
    		int strLen = strlen(str2);
    		int resultLen = sizeof(result);
    		for(i=1; ret>0; i++)
    		{
    			memset(result, 0, sizeof(result));
    			ret = split(str2, strLen, splitChar, i, result, resultLen);
    			if(ret>0)
    			{
    				printf("%s\n", result);
    			}
    		}
    		printf("split after, str2:%s\n", str2);
    	}
    	
    	{
    		const char* splitChar = "##";
    		printf("\n==========strtok2==========\n");
    		char str1[128] = "Keep##learning##and##study##hard";
    		printf("str1:\"%s\", splitChar:\"%s\"\n", str1, splitChar);
    		
    		char* ptr = strtok(str1, splitChar);
    		for(; ptr != NULL; )
    		{
    			printf("%s\n", ptr);
    			ptr = strtok(NULL, splitChar);
    		}
    		printf("strtok after, str1:%s\n", str1);
    		
    		printf("\n==========split2==========\n");
    		char str2[128] = "Keep##learning##and##study##hard";
    		printf("str2:\"%s\", splitChar:\"%s\"\n", str2, splitChar);
    		int i;
    		int ret = 1;
    		char result[128];
    		int strLen = strlen(str2);
    		int resultLen = sizeof(result);
    		for(i=1; ret>0; i++)
    		{
    			memset(result, 0, sizeof(result));
    			ret = split(str2, strLen, splitChar, i, result, resultLen);
    			if(ret>0)
    			{
    				printf("%s\n", result);
    			}
    		}
    		printf("split after, str2:%s\n", str2);
    	}
    	return 0;
    }
    

    三、测试结果

     

    四、总结
        strtok()函数介绍

     

    strtok()函数
    功能分割字符串
    头文件#include <string.h>
    原型char *strtok(char *str, const char *delim);
    参数

    str:要分割的字符串

    delim:分隔符

    返回值成功:非空指针,分割后的结果字符串
    失败:NULL,分割后没有得到有效的字符串
    备注

    第一次调用strtok()时,要解析的字符串应在str中指定。 在每个随后的应解析相同字符串的调用中,str必须置空。

    即第一次是strtok(str, spplitChar);

    后面调用strtok(NULL, spplitChar);

    注意:调用strtok之后会修改原来的str

     

     

    详情请查询man手册,man strtok

    展开全文
  • C++常用字符串分割方法

    千次阅读 2022-07-18 12:58:45
    From:...1. 用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能: 分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:...

    From:http://www.jb51.net/article/55954.htm

    1. 用strtok函数进行字符串分割

    原型:       char *strtok(char *str, const char *delim);
    功能:       分解字符串为一组字符串。
    参数说明:str为要分解的字符串,delim为分隔符字符串。
    返回值:    从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。
    其它:       strtok函数线程不安全,可以使用strtok_r替代。

    代码示例:

    //借助strtok实现split
    #include <string.h>
    #include <stdio.h>
    
    int main()
    {
        char chArry[] = "one two   three,four * five";
        const char *d = " ,*";
        char *p;
        p = strtok(s,d);
        while(p != NULL)
        {
            printf("%s\n", p);
            p=strtok(NULL, d);
        }
        return 0;
    }

    2. 用STL进行字符串的分割

    涉及到string类的两个函数find和substr:

    1、find函数     原型:       size_t find ( const string& str, size_t pos = 0 ) const;     功能:       查找子字符串第一次出现的位置。     参数说明:str为子字符串,pos为初始查找位置。     返回值:    找到的话返回第一次出现的位置,否则返回string::npos
    2、substr函数     原型:       string substr ( size_t pos = 0, size_t n = npos ) const;     功能:       获得子字符串。        参数说明:pos为起始位置(默认为0),n为结束位置(默认为npos)     返回值:    子字符串

    示例代码:

    #include <iostream>
    #include <string>
    #include <vector>
    
    //字符串分割函数
    std::vector<std::string> split(std::string str,std::string pattern)
    {
        std::string::size_type pos;
        std::vector<std::string> result;
        
        str+=pattern;//扩展字符串以方便操作
        int size=str.size();
        
        for(int i=0; i<size; i++)
        {
            pos=str.find(pattern,i);
            if(pos<size)
            {
                std::string s=str.substr(i,pos-i);
                result.push_back(s);
                i=pos+pattern.size()-1;
            }
        }
        return result;
    }
    
    int main()
    {
        std::string str;
        std::cout<<"Please input str:"<<std::endl;
        //std::cin>>str;
        getline(std::cin,str);
        std::string pattern;
        std::cout<<"Please input pattern:"<<std::endl;
        //std::cin>>pattern;
        getline(std::cin,pattern);//用于获取含空格的字符串
        std::vector<std::string> result=split(str,pattern);
        std::cout<<"The result:"<<std::endl;
        for(int i=0; i<result.size(); i++)
        {
            std::cout<<result[i]<<std::endl;
        }
        
        std::cin.get();
        std::cin.get();
        return 0;
    }

    find_first_not_of

    #include<string>
    #include<vector>
    #include<iostream>
    using namespace std;
    
    void Tokenize(const string& str, vector<string>& tokens, const string& delimiters)
    {
        // Skip delimiters at beginning.
        string::size_type lastPos = str.find_first_not_of(delimiters, 0);
        // Find first "non-delimiter".
        string::size_type pos = str.find_first_of(delimiters, lastPos);
        while (string::npos != pos || string::npos != lastPos)
        {
            // Found a token, add it to the vector.
            tokens.push_back(str.substr(lastPos, pos - lastPos));
            // Skip delimiters.  Note the "not_of"
            lastPos = str.find_first_not_of(delimiters, pos);
            // Find next "non-delimiter"
            pos = str.find_first_of(delimiters, lastPos);
        }
    }
    int main(int argc, char *argv[])
    {
        string str("====aaa==bbb=ccc=ddd====");
        vector<string>tokens;
        Tokenize(str, tokens, "=");
        for( int i = 0; i < tokens.size() ; i++ )
        {
            cout << tokens[i] << endl;
        }
        return 0;
    }

    3. 用Boost进行字符串的分割

    用boost库的正则表达式实现字符串分割

    示例代码:

    #include <iostream>
    #include <cassert>
    #include <vector>
    #include <string>
    #include "boost/regex.hpp"
     
    std::vector<std::string> split(std::string str,std::string s)
    {
        boost::regex reg(s.c_str());
        std::vector<std::string> vec;
        boost::sregex_token_iterator it(str.begin(),str.end(),reg,-1);
        boost::sregex_token_iterator end;
        while(it!=end)
        {
            vec.push_back(*it++);
        }
        return vec;
    }
    int main()
    {
        std::string str,s;
        str="sss/ddd/ggg/hh";
        s="/";
        std::vector<std::string> vec=split(str,s);
        for(int i=0,size=vec.size();i<size;i++)
        {
            std::cout<<vec[i]<<std::endl;
        }
        std::cin.get();
        std::cin.get();
        return 0;
    }

    boost里面有自带的split的函数,如果用boost的话,还是直接用split的好

    示例代码:

    #include <iostream>
    #include <string>
    #include <vector>
    #include <boost/algorithm/string/classification.hpp>
    #include <boost/algorithm/string/split.hpp>
    
    using namespace std;
    
    int main()
    {
        string s = "sss/ddd,ggg";
        vector<string> vStr;
        boost::split( vStr, s, boost::is_any_of( ",/" ), boost::token_compress_on );
        for( vector<string>::iterator it = vStr.begin(); it != vStr.end(); ++ it )
            cout << *it << endl;
        return 0;
    }
    展开全文
  • C++如何做字符串分割(5种方法)

    万次阅读 多人点赞 2021-04-06 16:56:05
    1、用strtok函数进行字符串分割 原型: char *strtok(char *str, const char *delim); 功能:分解字符串为一组字符串。 参数说明:str为要分解的字符串,delim为分隔符字符串。 返回值:从str开头开始的一个个被分割...
  • C++字符串分割方法

    千次阅读 2022-03-21 14:44:13
    结合find()和substr()实现字符串分割 *size_type find( const char str, size_type index, size_type length ); find()函数返回str在字符串中第一次出现的位置下标(从index开始查找,长度为length),如果没找到就...
  • Oracle字符串分割函数

    千次阅读 2021-05-07 12:41:26
    今天在创建视图的时候,碰到一个问题,问题如下:将字符格式为“XXX,YYY”分割出来,并且分割后作为两个字段放入视图中。考虑使用字符分割函数,但是查找资料Oracle没有字符分割的函数(我对Oracle不熟悉)。最后决定...
  • bash 字符串分割How to split a string by string in Bash? For example, 如何在Bash中按字符串分割 字符串 ? 例如, "a string separated byspace" => ["a", "string", "separated", "by", "space"] and 和 ...
  • 【shell】shell字符串分割|文件分割

    千次阅读 2021-11-03 16:24:36
    一、字符串分割 1、awk分割 2、利用shell 中 变量 的字符串替换成空格分割 3、设置分隔符,通过 IFS 变量 4、利用tr 指令实现字符替换 二、文件分割 附录 【转】linux下awk内置函数的使用(split/substr/...
  • 字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...
  • mysql字符串分割

    千次阅读 2021-09-16 10:27:17
    3.1、SUBSTRING_INDEX(str,delim,count)函数 参数: str: 要分割字符串 delim: 分割符(比如逗号,和点.) count: 计数(分割到第几个),正数表示从左向右数,负数表示从右向左数 例如: SELECT SUBSTRING_INDEX('...
  • C++实现字符串分割函数split()

    万次阅读 多人点赞 2020-04-30 22:31:47
    最近遇到了一个字符串分割的问题,在C++的标准库里面没有字符分割函数split()。我想这个问题今后可能还会再遇见,所以使用C/C++中的字符串分割方法完成相应的功能。 需求:对一个字符串进行分割,然后将分割后的...
  • 007.字符串分割

    千次阅读 2022-06-03 17:36:37
    字符串分割[TODO] 题目描述 给定非空字符串 s,将该字符串分割成一些子串,使每个子串的 ASCII 码值的和均为水仙花数。 1、若分割不成功,则返回 0 2、若分割成功且分割结果不唯一,则返回-1 3、若分割成功且分割...
  • 在Java中我们可以通过String对象的split方法将字符串按指定字符分割为字符串数组,但是MySQL中没有为我们提供字符串分割功能,今天在工作中遇到了这种需求,找到了解决办法,分享给大家 场景: 有组织表(带树形结构...
  • C++ string字符串分割

    千次阅读 2021-02-04 14:07:44
    C++ string字符串分割一、find()配合substr()二、使用strtok()函数总结 一、find()配合substr()     第一种办法是先通过find()函数查询到子字符串的位置,而后通过substr进行子字符串截取。 &...
  • 字符串分割成等长的若干字符串,根据特定字符分割字符串
  • mysql实现字符串分割

    千次阅读 2022-06-21 09:44:51
    mysql分割字符串
  • C语言字符串分割

    千次阅读 2021-09-05 11:31:28
    目标,提取字符串 “1.23,-14.56”, “11.111, 1.1” 等的数字。包含两组数据,中间逗号分隔,范围 -999.0 ~ 999.0。 #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { ...
  • mysql分割字符串应该如何实现呢?下面就为您介绍mysql分割字符串的实现方法步骤,希望可以让您对mysql分割字符串有更多的了解。例如:update `edw_video` set company = substring(keyword,1,length(SUBSTRING_INDEX...
  • C++ 字符串分割

    千次阅读 2019-10-14 18:11:01
    C++ 中经常需要对字符串按照指定字符或字符串进行分割操作以获得子串。下面给出具体实现。 版本一: //qsort函数需要的比较函数,按照升序排序 int comp(const void*a,const void*b) { return *(int*)a-*(int*)b; }...
  • Python字符串分割方法总结

    千次阅读 2021-01-14 23:06:15
    Python中字符串分割的常用方法是直接调用字符串的str.split方法,但是其只能指定一种分隔符,如果想指定多个分隔符拆分字符串需要用到re.split方法(正则表达式的split方法)。str.split字符串的split方法函数原型如下...
  • C语言字符串分割的两种方式

    万次阅读 多人点赞 2021-04-23 10:09:38
    s[]是原字符串,delim为分隔符 返回:字符串拆分后的首地址。 “拆分”:将分割字符用 '\0’替换 特性: 1)strtok拆分字符串是直接在 原串 上操作,所以要求参1必须,可读可写(char *str = “www.baidu.com” 不行...
  • Oracle字符串分割Split

    千次阅读 2021-05-07 00:53:13
    Oracle字符串分割Split一、创建数组类型Sql代码CREATE OR REPLACE TYPE T_RET_TABLE IS TABLE OF VARCHAR2(512)二、创建字符串分割函数Sql代码CREATE OR REPLACE FUNCTION F_SPLIT_STRING(AS_STR VARCHAR2,AS_SPLIT ...
  • QT中字符串分割

    千次阅读 2021-08-13 18:03:04
    ”,当求每一个字段的值时,可以采用字符串分割的方式来实现。 使用示例 下面只记录关键函数split. 使用QString的分割函数split来分割字符串: QString str = “<ew,we,ewe,sd,sd,sd>”; QStringList strList ...
  • Python数据类型-字符串分割

    千次阅读 2021-11-06 08:39:47
    字符串分割,通常有 split 和 partition 系列方法。 1. split 系列 split 系列方法包括 split() 、rsplit() 、splitlines() 等。 split() 将一个字符串分隔成多个字符串组成的列表,不含分隔符; rsplit() 的...
  • lua - 字符串分割

    千次阅读 2020-02-06 15:52:41
    代码: function __split(str, reps) local r = {} if str == nil then return nil end string.gsub(str, "[^"..reps.."]+", function(w) table.insert(r, w) ...str:待分割字符串 reps:分割字符 a = "1...
  • PHP字符串分割

    千次阅读 2019-03-02 13:08:57
    PHP字符串分割 PHP使用尽量多的方法分割以下字符串。 $str = &quot;a,b,cd,e,fdg,hj...&quot;; &amp;lt;?php /** * Created by PhpStorm. * User: archerzdip * Date: 2019-03-02 * Time: 13:02 */...
  • 常用的PHP字符串分割函数主要有explode、strtok、str_split,主要用来拆分字符串,并以数组或字符串形式返回,与这三个PHP字符串分隔函数相对应的,以分隔符连接拆分字符串的PHP字符串函数有implode、join,效果和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 449,056
精华内容 179,622
关键字:

字符串分割