精华内容
下载资源
问答
  • java String中文字符串分割成一定长度的字符串数组 /** * 几个字一组 变量控制 大于零有意义 */ int num = 6; /** * 待操作的字符串 */ String str = "一二三四五六七一二三四五六七一二三四五六七一二三...

    java String中文字符串分割成一定长度的字符串数组

    /**
     * 几个字一组 变量控制 大于零有意义
     */
    int num = 6;
    /**
     * 待操作的字符串
     */
    String str = "一二三四五六七一二三四五六七一二三四五六七一二三四五六七一二三四五六七一二三四五六七一二三四五六七一二三四五六七";
    /**
     * 可以分为几行
     */
    int lines = (str.length() + (num - 1)) / num;
    /**
     * 中间行
     */
    int center = ((lines + 1) / 2);
    System.out.println("长度:" + str.length());
    System.out.println("可以分为:" + lines + "行");
    /**
     * 转成数组
     */
    char[] chars = str.toCharArray();
    /**
     * 计数
     */
    int j = 0;
    /**
     * 开始加工
     */
    for (int i = 0; i < chars.length; i += num) {
        j++;
        System.out.print("中间行=" + center + "当前行:" + j);
        String s1 = String.valueOf(chars[i]);
        for (int k = 1; k <= num - 1; k++) {
            if (i + k < chars.length)
                s1 = s1.concat(String.valueOf(chars[i + k]));
        }
        //标示中间行
        if (j == center) {
            System.out.print("--->");
        }
        //打印结果 或者用String[] 来接 在循环外返回一个数组出去
        System.out.println(s1);
    
    }

    展开全文
  • C++ string 分割字符串

    千次阅读 2016-10-23 18:56:21
    少废话,直接看实例#include using namespace std;std::vector<std::string> splitString(const string &strSrc, const string &pattern) { vector<string > resultstr; if (strSrc == "") return re

    少废话,直接看实例

    #include <vector>
    using namespace std;
    
    std::vector<std::string> splitString(const string &strSrc, const string &pattern)
    {
        vector<string > resultstr;
        if (strSrc == "")
            return resultstr;
    
        // 添加在字符串最后,可以截取最后一段数据
        std::string strcom = strSrc + pattern;
        auto pos = strSrc.find(pattern);
        auto len = strcom.size();
    
        //
        while (pos != std::string::npos)
        {
            std::string coStr = strcom.substr(0, pos);
            resultstr.push_back(coStr);
    
            strcom = strcom.substr(pos + pattern.size(), len);
            pos = strcom.find(pattern);
        }
    
        return resultstr;
    }
    int main(int argc, const char * argv[])
    {
        std::string str = "Hello@World";
    
        for (auto itor : splitString(str, "@"))
        {
            printf(" -- %s \n", itor.c_str());
        }
    }

    在这段代码中使用到string中的 find() 和 substr()
    find函数原型,详细的API —— find链接

    string (1)  
    size_t find (const string& str, size_t pos = 0) const;
    
    c-string (2)    
    size_t find (const char* s, size_t pos = 0) const;
    
    buffer (3)  
    size_t find (const char* s, size_t pos, size_t n) const;
    
    character (4)   
    size_t find (char c, size_t pos = 0) const;

    substr 函数原型,详细的 API链接

    string substr (size_t pos = 0, size_t len = npos) const;
    展开全文
  • stringstream字符串分割类型转换

    万次阅读 2016-09-11 09:59:49
    一、string string 是 C++ 提供的字串型態,和 C 的字串相比,除了有不限长度的优点外,还有其他许多方便的功能。要使用 string, 必須先加入这一行: #include 接下來要宣告一个字串变量,可以写成: ...

    一、string

    string 是 C++ 提供的字串型態,和 C 的字串相比,除了有不限长度的优点外,还有其他许多方便的功能。要使用 string, 必須先加入这一行:

    #include <string>

    接下來要宣告一个字串变量,可以写成:

    string s;

    我们也可以在宣告的同时让它设成某个字串:

    string s="TCGS";

    而要取得其中某一個字元,和传统C 的字串一樣是用 s[i] 的方式取得。比较不一樣的是如果 s 有三個字元,傳統 C 的字串的 s[3] 是 0 字元,但是 C++ 的 string 則是只到 s[2] 这個字元而已。

    下面我们把 string 與 字元陣列的語法做一個對照:

    操作 string 字元陣列
    宣告字串 string s; char s[100];
    取得第 i 個字元 s[i] s[i]
    字串長度 s.length()
    或 s.size()
    strlen(s)
    读取一行 getline(cin, s); gets(s);
    设成某字串 s="TCGS"; strcpy(s, "TCGS");
    字串相加 s=s+"TCGS";
    s+="TCGS"
    strcat(s, "TCGS");
    字串比较 s=="TCGS" strcmp(s, "TCGS")

    从上面的表格,我們可以发现 string 的用法比较直观,因此如果沒有特別的需要,尽量使用 string 會比較方便。

     

    二、stringstream

    stringstream 是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的 iostreamfstream 有类似的操作方式。要使用 stringstream, 必須先加入這一行:

    #include <sstream>

    stringstream 主要是用在將一個字串分割,可以先用 clear( )以及 str( ) 將指定字串設定成一开始的內容,再用 >> 把个別的资料输出,例如:

    string s;
    stringstream ss;
    int a, b, c;
    getline(cin, s);
    ss.clear();
    ss.str(s);
    ss >> a >> b >> c;

    下面我們看到一個使用 stringstream 的例子:

    題目:输入的第一行有一个数字 N 代表接下來有 N 行資料,每一行資料里有不固定個數的整數(最多 20 個,每行最大 200 個字元),請你寫一個程式將每行的总和印出來。

    輸入:

    3
    1 2 3
    20 17 23 54 77 60
    111 222 333 444 555 666 777 888 999

    輸出:

    6
    251
    4995

    程式如下:

    string s;
    stringstream ss;
    int n, i, sum, a;
    cin >> n;
    getline(cin, s); // 讀取換行
    for (i=0; i<n; i++)
    {
        getline(cin, s);
        ss.clear();
        ss.str(s);
        sum=0;
        while (1)
        {
            ss >> a;
            if ( ss.fail() ) break;
            sum+=a;
        }
        cout << sum << endl;
    }

     string类型是c语言中char *类型的一种更便利的实现。使用这个类型,不用再去刻意考虑内存的事儿。在做快速开发的时候,string对象提供的便利,还是相当出色的。然而,在这儿提醒一下:string类型很有可能成为一个工程效率问题的根源,产品级别的应用当中,应该尽量避免在深层循环嵌套中使用string类型
        除size()外,另外两个string常用的方法是find和substr。在下面的代码当中:
        string str = "aaaaddddssdfsasdf";
        size_t pos = str.find("ssdf", 3);                       //用if(pos == string::npos) 用来判断是否找到子串。
        string str2 = str.substr(pos, 5);
        find函数从str的第3个位置查起,找到ssdf这个子串后,返回子串的位置。而substr函数从pos位置开始,截取5个字符,赋值给str2。也就是说,str2之后的内容将是ssdfs。

        stringstream是字符串流,经常被我用来作数据切分或者类型转化。一个经常被我用到的函数如下:
    string i2s(int i, int len = 0)
    {
        stringstream ss;
        ss << setw(len) << setfill('0') << i;
        return ss.str():
    }
        以i2s(7, 3)形式调用这个函数,返回的结果是字符串007。我通常在循环里,这样产生或者遍历一些文件。


    使用stringstream对象简化类型转换

    C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类型安全和可扩展性。在本文中,我将展示怎样使用这些库来实现安全和自动的类型转换。

    为什么要学习

    如果你已习惯了<stdio.h>风格的转换,也许你首先会问:为什么要花额外的精力来学习基于<sstream>的类型转换呢?也许对下面一个简单的例子的回顾能够说服你。假设你想用sprintf()函数将一个变量从int类型转换到字符串类型。为了正确地完成这个任务,你必须确保证目标缓冲区有足够大空间以容纳转换完的字符串。此外,还必须使用正确的格式化符。如果使用了不正确的格式化符,会导致非预知的后果。下面是一个例子:

    int n=10000;

    chars[10];

    sprintf(s,”%d”,n);// s中的内容为“10000”

    到目前为止看起来还不错。但是,对上面代码的一个微小的改变就会使程序崩溃:

    int n=10000;

    char s[10];

    sprintf(s,”%f”,n);// 看!错误的格式化符

    在这种情况下,程序员错误地使用了%f格式化符来替代了%d。因此,s在调用完sprintf()后包含了一个不确定的字符串。要是能自动推导出正确的类型,那不是更好吗?

    进入stringstream

    由于ns的类型在编译期就确定了,所以编译器拥有足够的信息来判断需要哪些转换。<sstream>库中声明的标准类就利用了这一点,自动选择所必需的转换。而且,转换结果保存在stringstream对象的内部缓冲中。你不必担心缓冲区溢出,因为这些对象会根据需要自动分配存储空间。

    你的编译器支持<sstream>吗?

    <sstream>库是最近才被列入C++标准的。(不要把<sstream>与标准发布前被删掉的<strstream>弄混了。)因此,老一点的编译器,如GCC2.95,并不支持它。如果你恰好正在使用这样的编译器而又想使用<sstream>的话,就要先对它进行升级更新。

    <sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作。

    注意,<sstream>使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。

    string到int的转换

    string result=”10000”;
    int n=0;
    stream<<result;
    stream>>n;//n等于10000

    重复利用stringstream对象

    如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法;

    在多次转换中重复使用同一个stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU时间的。

    在类型转换中使用模板

    你可以轻松地定义函数模板来将一个任意的类型转换到特定的目标类型。例如,需要将各种数字值,如int、long、double等等转换成字符串,要使用以一个string类型和一个任意值t为参数的to_string()函数。to_string()函数将t转换为字符串并写入result中。使用str()成员函数来获取流内部缓冲的一份拷贝:

    template<class T>

    void to_string(string & result,const T& t)

    {

     ostringstream oss;//创建一个流

    oss<<t;//把值传递如流中

    result=oss.str();//获取转换后的字符转并将其写入result
    }

    这样,你就可以轻松地将多种数值转换成字符串了:

    to_string(s1,10.5);//double到string

    to_string(s2,123);//int到string

    to_string(s3,true);//bool到string

    可以更进一步定义一个通用的转换模板,用于任意类型之间的转换。函数模板convert()含有两个模板参数out_type和in_value,功能是将in_value值转换成out_type类型:

    template<class out_type,class in_value>

    out_type convert(const in_value & t)

    {

    stringstream stream;

    stream<<t;//向流中传值

    out_type result;//这里存储转换结果

    stream>>result;//向result中写入值

    return result;

    }

    这样使用convert():

    double d;

    string salary;

    string s=”12.56”;

    d=convert<double>(s);//d等于12.56

    salary=convert<string>(9000.0);//salary等于”9000”

    结论

     

    在过去留下来的程序代码和纯粹的C程序中,传统的<stdio.h>形式的转换伴随了我们很长的一段时间。但是,如文中所述,基于stringstream的转换拥有类型安全和不会溢出这样抢眼的特性,使我们有充足得理由抛弃<stdio.h>而使用<sstream>。<sstream>库还提供了另外一个特性—可扩展性。你可以通过重载来支持自定义类型间的转换。

    一些实例:

    stringstream通常是用来做数据转换的。

    相比c库的转换,它更加安全,自动和直接。

     

    例子一:基本数据类型转换例子 int转string

     

    #include <string>
    #include <sstream>
    #include <iostream> 

    int main()
    {
        std::stringstream stream;
        std::string result;
        int i = 1000;
        stream << i; //将int输入流
        stream >> result; //从stream中抽取前面插入的int值
        std::cout << result << std::endl; // print the string "1000"

     

     

    运行结果:

    001

     

    例子二:除了基本类型的转换,也支持char *的转换。

     

    #include <sstream>
    #include <iostream> 

    int main()
    {
        std::stringstream stream;
        char result[8] ;
        stream << 8888; //向stream中插入8888
        stream >> result; //抽取stream中的值到result
        std::cout << result << std::endl; // 屏幕显示 "8888"

     

     

    002

     

    例子三:再进行多次转换的时候,必须调用stringstream的成员函数clear().

     

    #include <sstream>
    #include <iostream>
    int main()
    {
        std::stringstream stream;
        int first, second;
        stream<< "456"; //插入字符串
        stream >> first; //转换成int
        std::cout << first << std::endl;
        stream.clear(); //在进行多次转换前,必须清除stream
        stream << true; //插入bool值
        stream >> second; //提取出int
        std::cout << second << std::endl;

     

    运行clear的结果

    003

    没有运行clear的结果

    004

    展开全文
  • 转换为[3,6,9]String termstr = "3,6,9";List&lt;String&gt; terms = Arrays.asList(StringUtils.split(termstr, ","));["3","6","9"]List&lt;...
    需求:将"3,6,9"转换为[3,6,9]

    String termstr = "3,6,9";
    List<String> terms = Arrays.asList(StringUtils.split(termstr, ","));["3","6","9"]
    List<Integer> intTerms = Lists.newArrayList();
    for (String term : terms) {
        intTerms.add(Integer.parseInt(term));  //intTerms   [3,6,9]
    }
    展开全文
  • C++ string字符串分割

    万次阅读 2018-05-27 21:42:04
    假设str为待分割字符串,pattern为分割的标记字符串,如下:vector&lt;string&gt; split(const string&amp; str, const string&amp; pattern) { vector&lt;string&gt; ret; if(pattern...
  • &lt;string name="callblocker_search"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;.../string&...”表示一个英文字符,汉子就加两个,就行了。欢迎批评指正。...
  • 2、String类型字符串利用子字符串对其切割方法 相信都用String对象的Split方法,一般利用这种方法对字符串进行切割。但是实际上,如果需要对一串字符串(如:aaa_bbbb_c_ddddd,其中a、b、c、d的位数不定,但是“_...
  • List 转换成以逗号分割String字符串

    千次阅读 2021-01-04 16:35:53
    1、使用谷歌的Joiner(代码超级短) ... import java.util.ArrayList; import java.util.List;... public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.
  • java中截取以逗号分割string字符串

    万次阅读 2019-09-27 11:03:26
    String string = "张三,李四,王五,马六,小气"; String substring = string.substring(0, string.length() - 1); System.out.println(substring); String[] split = substring.split(",");//以逗...
  • 1. split 按照指定的字符分割,如按照";"或 "/"等分割 QString str = "hello,world" QStringList list = str.split(","); QString a = list[0]; //a = "hello" QString b = list[1]; //b = "world" QString str2 = ...
  • 标准std::string分割字符串split

    万次阅读 2015-01-30 15:44:49
    在C#中分割字符串有现成的函数Split可供调用,但是标准C++好像却没有现成的,还好根据STL地强大功能,可以很方便地自己实现出来,下面就是我写的分割函数: std::vector splitString(std::string srcStr, std::...
  • java根据特定字符分割String字符串

    千次阅读 2015-03-30 19:15:00
    2019独角兽企业重金招聘Python工程师标准>>> String item=“a,a_content;...最后得到分割后的字符串数组 转载于:https://my.oschina.net/u/990728/blog/393754
  • 一、拼接以 “逗号” 隔开的String字符串 如果需要对字符串进行频繁拼接的话,使用StringBuffer或者StringBuilder StringBuffer:【字符串缓冲器】是线程安全的,效率低 StringBuilder:【字符串操作类】是线程不安全...
  • 先将一组数字组装成String字符串,然后接受通过split()方法分割: import java.util.ArrayList; import java.util.List; public class Text { public static void main(String[] args) { String ids = "1,2,3,4,...
  • List转字符串,用逗号隔开 List<string> list = new List<string>(); list.Add("a"); list.Add("b"); list.Add("c"); string s = string.Join(",", list.ToArray()); List<test> list =...
  • string类型读取一行字符串,按照空格作为分隔符: 包含头文件 string word; getline(cin,word); istringstream tmp(word); while(tmp>>word) { ...//使用word } 会跳过所有的空格,while循环的结束条件是...
  • c++ string split分割字符串

    千次阅读 2017-12-03 16:19:30
    c++原生好像没有split分割字符串内置函数 #include #include #include #include #include #include #include #include using namespace std; vector split(string &str,string sp){ vector split; //...
  • C++ string分割字符串并去除空格

    千次阅读 2011-10-27 16:23:47
    // Txt.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include #include ...vector splitEx(const string& src, string sep) { vector strs; int seplen = s
  • 1、使用谷歌的Joiner(代码超级短) import ... import java.util.ArrayList; import java.util.List; ...public class Convert { public static void main(String[] args) { List<In...
  • C++ string字符串分割成一个数组

    千次阅读 2018-02-10 13:27:34
    C++的string类型可以很方便的操作字符串,但是在使用中发现不支持Split,为了满足使用的需要,我自己写了一个分割函数#include &lt;string&gt; #include &lt;vector&gt; using std::string; //使用...
  • c++ 按分割符切割string字符串

    千次阅读 2017-10-27 16:03:02
    /*************************************************** 函数名称: SplitString* 功能描述: 按切割符截取字符串* 参 数: const string &amp; srcStr源字符串* 参 数: vector&lt;string&gt; &...
  • c++ stringstream分割字符串

    千次阅读 2018-04-24 19:42:54
    我们都知道stringstream可以方便的进行数据类型转换,其实还有一个妙用就是按空格分割字符串。#include&lt;iostream&gt; #include&lt;cstring&gt; #include&lt;cstdio&gt; #include&lt;...
  • php根据字符串分割字符串How to split a string by string in PHP? For example, 如何在PHP中按字符串分割 字符串 ? 例如, "a string separated byspace" => ["a", "string", "separated", "by", "space"] and...
  • Delphi : 分割字符串string,取出截取中间字符串  (2012-05-17 09:50:26) 标签:  it 分类: 软件_Software Function FindStr(BegSprStr,EdSpStr:String;var Source:String):...
  • string 字符串以某个符号分割

    千次阅读 2015-03-20 10:54:46
    std::vector split(std::string str,std::string pattern){std::string::size_type pos;std::vector result;...//扩展字符串以方便操作 // 可以不用int size=str.size();for(int i=0; i; i++){pos=str.find(pattern
  • C++ string类型的split字符串分割函数

    万次阅读 2015-09-26 10:56:26
    std::vector<std::string> split(const std::string& s, const std::string& delim) { std::vector<std::string> elems; size_t pos = 0; size_t len = s.length(); size_t delim_len = delim.lengt
  • golang 字符串分割分割字符串

    万次阅读 2020-05-04 18:07:15
    package main import ( "fmt" "strings" ) func main() { str := "-100 123 200" //指定分隔符 countSplit := strings.Split(str, " ") fmt.Println... //指定分割符号,指定分割次数 countSplit...
  • Stl String 分割字符串的一种简洁方法

    千次阅读 2015-10-19 22:47:23
    #include #include #include #include #include using namespace std; int main(int argc, char **argv) ... string s("hello world bye"); vector vect; vector::const_iterator vectIter; s
  • C++中string字符串分割实现

    千次阅读 2020-03-13 18:23:38
    C++标准库里面没有提供的...C++中string字符串分割实现: #include <vector> #include <string> #include <iostream> using namespace std; std::vector<std::string> split(const std::s...
  • 2018.09.21更新于文章尾部:第二个函数优化了处理时间,占用更少内存和时间 -------------------------------------------- 因为之前被人问到这个...需要被分割字符串:std::string 分割之后的结果:typedef ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 208,683
精华内容 83,473
关键字:

分割string类型字符串