2013-04-08 21 views
0

這是我的Mystr值:如何在php中使用分隔符(空格)來切割字符串,就像substr一樣?

他人:0.01罰分:0.02 PDI:0.03 PDP:0.04興趣:0.05 主:0.06 CBU:0.07節約:0.08 bankcharge:0.09 GRT:0.10

我所需的輸出:

其它:0.01

罰分:0.02

PDI:0.03

PDP:0.04

興趣:0.05

主要:0.06

CBU:0.07

節約:0.08

bankcharge:0.09

grt:0.10

我想將它分配給不同的變量。我該怎麼做呢?

+2

你要找的'strtok'或'strsep'。 'strsep'更好,但不便攜。 – cnicutar 2013-04-08 06:50:25

+0

謝謝你的答案..它幫助了很多.. – epoy 2013-04-08 07:54:22

回答

3

C中的工具是strtokGNU Manual,SUS V2 Spec)。您首次使用您的字符串和分隔符集呼叫strtok。然後,對於後續部分,請使用NULL和分隔符集調用strtok,它將繼續從停止的位置開始搜索。

#include <string.h> 
#include <stdio.h> 

int main(void) { 
    char x[] = "others:0.01 penalty:0.02 pdi:0.03 pdp:0.04 interest:0.05 principal:0.06 cbu:0.07 savings:0.08 bankcharge:0.09 grt:0.10"; 
    char toPrint[sizeof(x) * 2]; 
    char *a; 

    strcpy(toPrint,strtok(x," ")); 
    strcat(toPrint,"\n"); 

    while ((a=strtok(NULL," ")) != NULL) { 
     strcat(toPrint,a); 
     strcat(toPrint,"\n"); 
    } 
    fputs(toPrint,stdout); 
} 

打印

others:0.01 
penalty:0.02 
pdi:0.03 
pdp:0.04 
interest:0.05 
principal:0.06 
cbu:0.07 
savings:0.08 
bankcharge:0.09 
grt:0.10 

注意strtok修改原始陣列。在程序結束時,x數組包含"1\02\03\04"。所有的分隔符都被零覆蓋。還要注意的是字符串中的兩個連續的分隔符會導致strtok產生一個空字符串""的(缺失)值。

+1

可能是很好的鏈接作爲參考和用戶也許例如=) – Cyclonecode 2013-04-08 06:53:53

+0

同意。讓我做好。 – 2013-04-08 06:54:38

+0

謝謝你的答案..我剛纔知道,他們是一個功能,正如SUBSTR在PHP ..好日子和祝福的一天... – epoy 2013-04-08 07:55:46

相關問題