我需要从两个字符之间获取字符串。我有这个
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
答案 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)
像这样你可以分配你想要的那个