2013-03-06 3 views
-4

Может кто-то, пожалуйста, помогите мне в решении этой задачи, я ценю ваше время.String of filenames

Существует огромное количество имен файлов (String of filenames), и я должен получить идентификационную форму для каждого имени файла из приведенных ниже имен файлов.

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

+2

Мы можем помочь исправить ваш код, но мы его не будем писать. –

+0

Просто проверьте, является ли ваш символ 'char == '_'', а следующий - буквой. Если это так, подстройте его последним _. – Rob

ответ

0

Для примеров, приведенных Вами, это будет работать:

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

Следующее регулярное выражение предполагает, что сразу после «ID» есть знак «_», за которым следует какой-то символ, отличный от цифры.

+0

, это будет нормально, если только это не шестнадцатеричные числа, и в этом случае он может иметь шестнадцатеричное число «цифра» (a-f) в любом положении. Но для приведенных примеров и, возможно, для всего, что у него есть, это выглядит прекрасно. Я собирался предложить завершить до подчеркивания до первой группы не-подчеркивания, в котором содержится любая буква, которая не была шестнадцатеричной. – arcy