2013-03-06 58 views
-4

有人可以幫助我完成這項任務,我感謝您的參與時間。字符串的文件名

有大量的文件名(文件名字符串),我必須從下面的示例文件名中得到每個文件名的ID形式。

1100_007_1_ALL_GC_Identify_TOA.txt 
1100_007_2_ALL_GC_Identify_TOA.txt 
1100_008A_1_ALL_GC_Set_Individual_In-Active.txt 
1100_008B_2_ALL_GC_Set_Individual_In-Active_TP.txt 
1100_001_TOA_Indiv.txt 
1100_002_TOA_Indiv.txt 
1100_006_ALL_GC_Check_In_Active_TOA.txt 
1100_010_TOA_Control_1.txt 

Final output should be :- 
File ID's: 
1100_007_1 
1100_007_2 
1100_008A_1 
1100_008B_1 
1100_001 
1100_002 
1100_006 
1100_010 

我嘗試以下,但它並不適用於文件1100_008A_1

public static String stripNonDigits(final String input){ 
    final StringBuilder sb = new StringBuilder(); 
    for(int i = 0; i < input.length(); i++){ 
     final char c = input.charAt(i); 
     if(c > 47 && c < 58){ 
     sb.append(c); 
     } 
    } 
    return sb.toString(); 
} 
+3

你有沒有嘗試過,或者你只是在尋找少量的免費編程? – arcy 2013-03-06 18:13:07

+2

我們可以幫助解決您的代碼問題,但我們不會爲您編寫代碼。 – 2013-03-06 18:14:42

+0

只要檢查你的'char =='_''和下面的是一個字母。如果是這樣,用最後一個字符串進行子串處理。 – Rob 2013-03-06 18:15:13

回答

0

工作由你給出的例子,這會工作:

String filename = "1100_007_1_ALL_GC_Identify_TOA.txt"; 
String id = filename.replaceAll("_\\D.*", ""); 

下面的正則表達式假設在'ID'部分後面有一個'_'符號,後面跟着一些除數字之外的字符。

+0

這將是正常的,除非那些是十六進制數字,在這種情況下,他可以在任何位置有一個十六進制數字(數字)(a-f)。但是對於給出的例子,並且可能對於他所擁有的一切,這看起來很好。我打算建議在包含任何非十六進制數字的非下劃線的第一個分組之前終止下劃線。 – arcy 2013-03-06 19:33:20

相關問題