我是一个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("[,:]");
任何贡献都将受到赞赏。
答案 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