从两个字符之间获取字符串

时间:2011-04-09 10:37:48

标签: java string special-characters

我需要从两个字符之间获取字符串。我有这个

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

7 个答案:

答案 0 :(得分:6)

String#split。由于它接受正则表达式字符串,并且|是正则表达式中的特殊字符,因此您需要将其转义(使用反斜杠)。由于\是Java字符串文字中的特殊字符,因此您还需要转义 it ,有时人们会感到困惑。所以给出:

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必要的那些。)

答案 1 :(得分: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

答案 2 :(得分:2)

或者,org.apache.commons.lang.StringUtils有大约14种split()方法的变种。

答案 3 :(得分:1)

如果每列的长度是多样的,请使用此处给出的示例和split方法。

但是,如果你有一个固定大小的文件格式substring将是一个更好的选择。如果你看看substring(Java 5及以上,如果我没记错的话)的实现 - 你可以看到它有一个O(1)来创建新字符串,而split使用一个正则表达式很耗时。

答案 4 :(得分:0)

你可能想要这个:

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

还有方法trim(),它从字符串中删除尾随空格。

答案 5 :(得分:0)

与其他答案一样,我建议您使用split()方法来分隔您的字符串,但如果您在部件之后没有空格,请记住使用trim:如下所示:

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();
...

答案 6 :(得分:-1)

您还可以使用string.substring并获取所需的输出

string a =s.substring(0,8)

像这样你可以分配你想要的那个