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

Java 从两个字符之间获取字符串,java,string,special-characters,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 有一个。由于它接受正则表达式字符串,并且|是正则表达式中的特殊字符,因此需要对其进行转义(使用反斜杠)。由于\是Java字符串

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

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
有一个。由于它接受正则表达式字符串,并且
|
是正则表达式中的特殊字符,因此需要对其进行转义(使用反斜杠)。由于
\
是Java字符串文本中的一个特殊字符,您也需要对其进行转义,这有时会让人感到困惑。因此:

String S = "10:21:35 |Manipulation |Mémoire centrale |MAJ Registre mémoire";
然后

String[]parts=S.split(“\\\\”);
整数指数;
对于(索引=0;索引
将输出

10:21:35 Manipulation Mémoire centrale MAJ Registre mémoire 10:21:35 操纵 中央梅莫尔酒店 梅莫尔大酒店 (前三位的尾随空格;如果需要的话。)

有。由于它接受正则表达式字符串,并且
|
是正则表达式中的特殊字符,因此需要对其进行转义(使用反斜杠)。由于
\
是Java字符串文本中的一个特殊字符,您也需要对其进行转义,这有时会让人感到困惑。因此:

String S = "10:21:35 |Manipulation |Mémoire centrale |MAJ Registre mémoire";
然后

String[]parts=S.split(“\\\\”);
整数指数;
对于(索引=0;索引
将输出

10:21:35 Manipulation Mémoire centrale MAJ Registre mémoire 10:21:35 操纵 中央梅莫尔酒店 梅莫尔大酒店
前三位的尾随空格;如果需要的话。)

您可能需要:

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

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

您可能需要这样:

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

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

您也可以使用string.substring并获得所需的输出

string a =s.substring(0,8)

像这样,你可以为你想要的指定一个

你也可以使用string.substring并获得所需的输出

string a =s.substring(0,8)
String s = " 10:21:35   |  Manipulation |  Mémoire centrale |   MAJ Registre mémoire   ";
String[] split = s.trim().split("\\s*\\|\\s*",-1); //trim and split

像这样,你可以为你想要的方法赋值。或者,org.apache.commons.lang.StringUtils有大约14种split()方法的变体。

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

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

String s = " 10:21:35   |  Manipulation |  Mémoire centrale |   MAJ Registre mémoire   ";
String[] split = s.trim().split("\\s*\\|\\s*",-1); //trim and split
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()方法来分隔字符串,但如果部分后没有空格,请记住使用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();
...

如果每列的长度不同,请使用此处给出的示例和
split
方法


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

如果每个列的长度不同,请将这里给出的示例与
split
方法一起使用


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

这是最好的选择get@fayza:LOL不用担心,很高兴这有帮助。我会使用split的2参数版本,至少如果其中一个(最后一个)字段可以为空,否则将丢弃尾随的空字符串<代码>字符串[]部分=S.split(“\\\\\”,4)
String[]parts=S.split(“\\\\”,-1)这是您能做的最好的get@fayza:LOL不用担心,很高兴这有帮助。我会使用split的2参数版本,至少如果(最后)一个字段可以为空,否则尾部的空字符串将被丢弃<代码>字符串[]部分=S.split(“\\\\\”,4)
String[]parts=S.split(“\\\\”,-1)否,返回单个字符串的大数组。正如我在回答中所说,
|
是正则表达式中的一个特殊字符,
String#split
使用正则表达式字符串。你是对的,你必须用两个反斜杠转义“|”。抱歉,我在发布代码之前没有运行代码。不,这将返回一个大的单字符串数组。正如我在回答中所说,
|
是正则表达式中的一个特殊字符,
String#split
使用正则表达式字符串。你是对的,你必须用两个反斜杠转义“|”。很抱歉,我在发布代码之前没有运行代码。这会删除尾随空格,但最后一列除外。最好提供第二个参数以拆分尾随字段,否则可能会丢失空尾随字段。这会删除尾随空格,但最后一列除外。最好提供第二个参数以拆分尾随字段,否则可能会丢失空尾随字段。