分割包含两个特殊字符的字符串

4

我有一个字符串值,看起来像下面这样:

TE\;R20\;T11\;19

我希望将其分割为TER20T1119。我尝试使用split方法进行分割,但不幸的是它仍然无法正确地分割字符串。

以下是我的源代码

String description1 = CSVdata2[7];
System.out.println("The description1 is :"+description1);
String email1 = CSVdata2[2];
String [] data1 = description1.split(";");
String ID1 = data1[0];
String [] data2 = SysID1.split("/");
String ID2 = data2[0];
System.out.println("The ID2 is :"+ID2);

这是我的样例输出。
The description1 is :TE\;R20\;T11\;19
The ID2 is :TE\

我曾经在网上搜索了一些方法,但仍然无法将其拆分为我想要的字符串。

1
String[] parts = inputString.split("\\\\;"); - austin wernli
4个回答

2

你需要转义 \,因为在字符串中 \ 是一个转义字符。尝试以下代码:

    String s = "TE\\;R20\\;T11\\;19";
String arr[] = s.split("\\\\;");
    System.out.println(Arrays.toString(arr));

为了转义反斜杠\,你需要使用\

OP:

[TE, R20, T11, 19]

我无法将我的字符串更改为TE\;R20\;T11\;19。 - yumi
@yumi 不需要转换。在Java中,单个\在“String”中是不允许的。因此,在您的代码中,“description1”已经包含了“TE\;R20\;T11\;19”。只需使用description1.split("\\\\;");即可。 - Shubhendu Pramanik
哈哈,我猜我误解了你的意思。因为我不确定Java如何处理“\”和“\”。 - yumi

1
    String test = "TE\\;R20\\;T11\\;19";
    System.out.println(test);
    for(String sub : test.split("\\\\;"))
    {
        System.out.println(sub);
    }

输出结果为:
TE\;R20\;T11\;19
TE
R20
T11
19

我的简单代码。String.split方法接受一个正则表达式字符串而不是一个单个字符进行分割。


我无法将我的字符串更改为TE\;R20\;T11\;19。只允许使用“\”,而不是“\”。 - yumi

0
public static void main(String[] args) {
    String name="TE\\;R20\\;T11\\;19";
    String a[]=name.split("\\\\;");
    for(int i=0;i<a.length;i++){
        System.out.print(a[i]+" ");
    }
}

0

通过使用"Pattern.quote",我们可以拆分字符串

String separator = "\\;";
String value = "TE\\;R20\\;T11\\;19";
String[] arrValues = value.split(Pattern.quote(separator));

 System.out.println(Arrays.asList(arrValues));

输出:

[TE,R20,T11,19]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接