2011-04-09 71 views
1

我需要從兩個字符之間獲取字符串。我有這個從兩個字符之間獲取字符串

S= "10:21:35 |Manipulation  |Mémoire centrale |MAJ Registre mémoire" 

,它必須回到各4個字符串變量:

a=10:21:35 
b=Manipulation 
c=Mémoire centrale 
d=MAJ Registre mémoire 

回答

6

String#split。由於它接受正則表達式字符串,並且|是正則表達式中的特殊字符,所以您需要將其轉義(使用反斜槓)。而且由於\是Java字符串文字中的一個特殊字符,因此您需要轉義,這些人有時會覺得困惑。所以給出:

String S = "10:21:35 |Manipulation |Mémoire centrale |MAJ Registre mémoire"; 

然後

String[] parts = S.split("\\|"); 
int index; 
for (index = 0; index < parts.length; ++index) { 
    System.out.println(parts[index]); 
} 

將輸出

10:21:35 
Manipulation 
Mémoire centrale 
MAJ Registre mémoire

隨着上的前三個比特後面的空格; trim那些如果必要的話。)

+0

這是最好的你可以得到 – Dotnet 2011-04-09 10:43:29

+0

謝謝youuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,它的工作 – fayza 2011-04-09 11:04:42

+0

@fayza:大聲笑沒有擔心,很高興幫助。 – 2011-04-09 11:33:01

0

你可能想要這個:

String[] s = "10:21:35 |Manipulation |Mémoire centrale |MAJ Registre mémoire".split("\\|"); 

還有方法trim()從而消除拖尾從字符串空間。

+0

不,返回一個大數組的單字符字符串。正如我在我的回答中所說的,'|'是正則表達式中的特殊字符,'String#split'使用正則表達式字符串。 – 2011-04-09 10:45:55

+0

你是對的,你必須逃避「|」有兩個反斜槓。在發佈之前我沒有運行我的代碼,對不起。 – janhink 2011-04-09 10:48:17

-1

您還可以使用string.substring並獲得所需的輸出

string a =s.substring(0,8) 

喜歡這款U可以分配爲一個你想

3
String s = " 10:21:35 | Manipulation | Mémoire centrale | MAJ Registre mémoire "; 
String[] split = s.trim().split("\\s*\\|\\s*",-1); //trim and split 
+0

用於放棄拖尾空格+1,很好。 – 2011-04-09 11:07:43

+1

除了最後一列之外,這會挖掘尾部空格。 – 2011-04-11 11:02:47

+1

更好地提供了第二個參數來拆分或丟失空尾字段。 – 2011-04-11 12:05:18

2

另外,org.apache.commons.lang .StringUtils有大約14個split()方法的變種。

0

像在其他的答案我建議你使用split()方法,以您的字符串分隔,但reme​​ber使用修剪你會不會有部分後空格,如:

S= "10:21:35 |Manipulation  |Mémoire centrale |MAJ Registre mémoire"  
String splitted[] = S.split("\\|"); 
String a = splitted[0].trim(); 
String b = splitted[1].trim(); 
... 
1

如果各家之長列是變化的,請使用split方法給出的例子。

但是,如果您有一個固定大小的文件格式substring將是一個更好的選擇。如果您查看substring(Java 5及更高版本,如果我正確記得)的實現 - 您可以看到它具有創建新字符串的O(1),而split使用了耗時的正則表達式。

相關問題