如何用逗号分隔字符串后跟java中的冒号?

时间:2015-10-18 22:47:48

标签: java split

我是一个java新手,我很想知道如何分割一个以逗号开头的字符串,并在结尾处跟着一个冒号。  这种字符串的一个例子是?

-10,3,15,4:38
5,15,8,2:8

可能是这样的吗?

sections = line.split(",");
tokens = sections[3].split(":");

或甚至可以将读取文件的行拆分两次?

tokens = line.split(",");
tokens = line.split(":");

我也尝试了这个,但它给了我一个ArrayOutOfBound错误

tokens = line.split("[,:]");

任何贡献都将受到赞赏。

3 个答案:

答案 0 :(得分:5)

在分割部分中使用正则表达式,例如

#include <stdio.h>
#include <stdlib.h>

#include <windows.h>
#include <Shlwapi.h>
//#pragma lib "Shlwapi.lib" 
#pragma comment( lib  , "Shlwapi.lib"  )



char *rootFolder(char *folder);

int IsAbsolutePath(const char *p){
    return !PathIsRelative(p);
}
/*_______________________________________________________
*/

int chdir(/*IN_OUT*/char *curDir,const /*IN*/char *newDir){ 

    int deep=0,i;
    char *p=(char*) newDir,*tmp;


    if(!newDir ||!*newDir ) return 0;

    /*if(IsAbsolutePath(newDir)){
        strcpy(curDir,newDir);
        return 1;
    }*/
    return (int) PathCombine(curDir,curDir,newDir);

    /**/
}
/*_______________________________________________________
*/

void DoTest(char *curDir,char *newDir){
    char path[MAX_PATH];
    strcpy(path,curDir);

    if(chdir(path,newDir))
        printf("'%s' + '%s' -> %'%s'\n",curDir,newDir,path);
    else
        printf("Error: an unhandled error occured\n");
    return ;

}
/*_______________________________________________________
*/

int main(){

    DoTest("C:\\abc","def");
    DoTest("C:\\abc","..\\def");
    printf("\n");

    DoTest("C:\\abc\\","def");
    DoTest("C:\\abc\\","..\\def");
    printf("\n");

    DoTest("\\\\server\\share","def");
    DoTest("\\\\server\\share","..\\def");
    printf("\n");

    DoTest("\\\\server\\share\\","def");
    DoTest("\\\\server\\share\\","..\\def");
    printf("\n");

    DoTest("\\\\server","def");
    DoTest("\\\\server","..\\def");
    printf("\n");

    DoTest("\\\\server\\","def");
    DoTest("\\\\server\\","..\\def");
    printf("\n");

    DoTest("c:\\Folder","\\\\server\\share");
    DoTest("\\\\server\\share","c:\\Folder");
    printf("\n");

    DoTest("c:\\Folder","\\share");
    DoTest("\\\\server\\share","\\Folder");
    printf("\n");

    DoTest("..\\Folder\\sub folder","..\\sibling");
    printf("\n");
    return 0;
}

没有测试过,但我认为你明白了。

答案 1 :(得分:1)

你也可以这样做,如果你想要一般的情况,该方法基本上接受字符串数组,拆分数组中每个索引的每个字符串,并将它们添加到ArrayList。你可以尝试一下,它有效。

public static void splitStrings(String[] str){

            String[] temp1 =null;//initialize temp array

            List<String> itemList = new ArrayList<String>();

            for(int i=0;i<str.length;i++){

                temp1=str[i].split(",|:");

                 for (String item : temp1) {
                     itemList.add(item);
                  }
                 //Only print the final result of collection once iteration has ended
                 if(i==str.length-1){

                     System.out.println(itemList);
                 }
            }

答案 2 :(得分:0)

我不确定我是否完全理解你的问题。但是,如果您首先想要按,然后按:进行拆分,则可以拨打split()两次功能

String[] str = {"-10,3,15,4:38", "5,15,8,2:8"};

for (String s: str) {
    String[] temp = s.split(",")[3].split(":");
    System.out.println(temp[0] + " " + temp[1]);
}

输出:

  

4 38

     

2 8