从两个字符之间获取字符串
我需要从两个字符之间获取字符串。我有这个从两个字符之间获取字符串
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