Re: [問題] 分割字串的問題, 求救 >"<
謝謝大家, 我寫出來了
以下是我寫作的方式
思路我是用逗點去想
由逗點數往前找, 如果是奇數個逗點, 就表示在雙引號內
public static void main(String[] args) {
String str =
"小尚,\"Abby, Sun\","+
"girl,0911-XXX0L9,\"si, Tokyo,"+
" Relax~~\",1988/11/20";
System.out.println(str);
int commaNums = 0;//記錄實際comma separate的個數
char content[] = str.toCharArray();
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case ',':
// , 處理,看是否在雙引號區域內
// 往前找, 如果是奇數個逗點, 就表示在雙引號內
int idxCommaNumber = 0; //記錄前面有幾個逼點的指標
for(int j = 0; j < i; j++){
if(content[j]=='"'){
idxCommaNumber++;
}
}
//System.out.println(idxCommaNumber);
if(idxCommaNumber%2 == 0){
commaNums++;
}
break;
case '\"':
// 雙引號區域相關判斷
// 有些判斷要看 content[i + 1]
// do something
break;
default:
// doSomething
break;
}
}
//新增一個儲存逗點位置的array
int[] arrayCommaPosition = new int[commaNums];
//儲存arrayCommaPosition用的指標
int idxComma = 0;
System.out.println(commaNums);
for (int i = 0; i < content.length; i++) {
if(content[i]==','){
int idxCommaNumber = 0; //記錄前面有幾個逼點的指標
for(int j = 0; j < i; j++){
if(content[j]=='"'){
idxCommaNumber++;
}
}
if(idxCommaNumber%2 == 0){
arrayCommaPosition[idxComma] = i;
idxComma++;
}
}
}
System.out.println("目前comma儲存的位置為");
for(int i =0; i< arrayCommaPosition.length;i++){
System.out.println(arrayCommaPosition[i]);
}
//創造一個儲存字串的陣列
String[] cells = new String[commaNums+1];
for(int i = 0 ; i < commaNums + 1 ; i++){
if(i==0){
cells[i] = str.substring(0, arrayCommaPosition[i]);
}else{
if(i==commaNums){
cells[i] = str.substring(arrayCommaPosition[i-1]+1,
content.length );
}else{
cells[i] = str.substring(arrayCommaPosition[i-1]+1,
arrayCommaPosition[i]);
}
}
}
for(int i =0; i < cells.length;i++){
cells[i] = cells[i].replace("\"", "");
}
//印出目前截出來的
for(int i = 0 ; i<cells.length;i++){
System.out.println("cell["+i+"]:"+cells[i]);
}
}
Console:
小尚,"Abby, Sun",girl,0911-XXX0L9,"si, Tokyo, Relax~~",1988/11/20
5
目前comma儲存的位置為
2
14
19
31
52
cell[0]:小尚
cell[1]:Abby, Sun
cell[2]:girl
cell[3]:0911-XXX0L9
cell[4]:si, Tokyo, Relax~~
cell[5]:1988/11/20
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.248.193
→
05/03 10:39, , 1F
05/03 10:39, 1F
→
05/03 10:52, , 2F
05/03 10:52, 2F
※ 編輯: bera 來自: 59.120.248.193 (05/03 10:53)
→
05/03 10:54, , 3F
05/03 10:54, 3F
→
05/03 10:58, , 4F
05/03 10:58, 4F
→
05/03 11:00, , 5F
05/03 11:00, 5F
→
05/03 11:01, , 6F
05/03 11:01, 6F
→
05/03 11:04, , 7F
05/03 11:04, 7F
→
05/03 11:16, , 8F
05/03 11:16, 8F
推
05/03 11:27, , 9F
05/03 11:27, 9F
→
05/03 11:37, , 10F
05/03 11:37, 10F
→
05/03 11:39, , 11F
05/03 11:39, 11F
→
05/03 11:41, , 12F
05/03 11:41, 12F
→
05/04 14:21, , 13F
05/04 14:21, 13F
討論串 (同標題文章)
完整討論串 (本文為第 5 之 6 篇):