我需要從兩個字符之間獲取字符串。我有這個從兩個字符之間獲取字符串
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
我需要從兩個字符之間獲取字符串。我有這個從兩個字符之間獲取字符串
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
有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
那些如果必要的話。)
你可能想要這個:
String[] s = "10:21:35 |Manipulation |Mémoire centrale |MAJ Registre mémoire".split("\\|");
還有方法trim()
從而消除拖尾從字符串空間。
不,返回一個大數組的單字符字符串。正如我在我的回答中所說的,'|'是正則表達式中的特殊字符,'String#split'使用正則表達式字符串。 – 2011-04-09 10:45:55
你是對的,你必須逃避「|」有兩個反斜槓。在發佈之前我沒有運行我的代碼,對不起。 – janhink 2011-04-09 10:48:17
您還可以使用string.substring並獲得所需的輸出
string a =s.substring(0,8)
喜歡這款U可以分配爲一個你想
String s = " 10:21:35 | Manipulation | Mémoire centrale | MAJ Registre mémoire ";
String[] split = s.trim().split("\\s*\\|\\s*",-1); //trim and split
用於放棄拖尾空格+1,很好。 – 2011-04-09 11:07:43
除了最後一列之外,這會挖掘尾部空格。 – 2011-04-11 11:02:47
更好地提供了第二個參數來拆分或丟失空尾字段。 – 2011-04-11 12:05:18
另外,org.apache.commons.lang .StringUtils有大約14個split()方法的變種。
像在其他的答案我建議你使用split()方法,以您的字符串分隔,但remeber使用修剪你會不會有部分後空格,如:
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();
...
如果各家之長列是變化的,請使用split
方法給出的例子。
但是,如果您有一個固定大小的文件格式substring
將是一個更好的選擇。如果您查看substring
(Java 5及更高版本,如果我正確記得)的實現 - 您可以看到它具有創建新字符串的O(1),而split
使用了耗時的正則表達式。
這是最好的你可以得到 – Dotnet 2011-04-09 10:43:29
謝謝youuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,它的工作 – fayza 2011-04-09 11:04:42
@fayza:大聲笑沒有擔心,很高興幫助。 – 2011-04-09 11:33:01