2011-04-09 106 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使用了耗时的正则表达式。

相关问题