Java反斜杠拆分字符串
我有一个类似“test\00216243”格式的字符串。 我需要根据反斜杠“\”在Java中拆分字符串Java反斜杠拆分字符串,java,regex,Java,Regex,我有一个类似“test\00216243”格式的字符串。 我需要根据反斜杠“\”在Java中拆分字符串 My Program: public class StringTest { public static void main(String[] args) { String taskOwner = "test\00216243"; String taskArray[] = taskOwner.split(Pattern.
My Program:
public class StringTest {
public static void main(String[] args) {
String taskOwner = "test\00216243";
String taskArray[] = taskOwner.split(Pattern.quote(System.getProperty("file.separator")));
System.out.println(taskArray[0]);
}
}
当我运行这个程序时,我得到以下结果,但不是“测试”结果。有什么帮助吗
Result:
test16243
\002
表示unicode字符。因此,我建议您根据字母或数字以外的字符分割输入
String string1 = "test\00216243";
String part[] = string1.split("[^a-z0-9]");
System.out.println(part[0]);
输出:
test
\002
表示unicode字符。因此,我建议您根据字母或数字以外的字符分割输入
String string1 = "test\00216243";
String part[] = string1.split("[^a-z0-9]");
System.out.println(part[0]);
输出:
test
字符串“test\0021623”
应替换为“test\\0021623”
因为\
表示转义序列,所以需要在字符串中使用\\
来表示\
试试这个
public static void main(String[] args) {
String taskOwner = "test\\00216243";
String myarray[] = taskOwner.split("\\\\");
System.out.println(myarray[0]+" "+myarray[1]);
}
输出
test 00216243
test
00216243
参考资料:
字符串“test\0021623”
应替换为“test\\0021623”
因为\
表示转义序列,所以需要在字符串中使用\\
来表示\
试试这个
public static void main(String[] args) {
String taskOwner = "test\\00216243";
String myarray[] = taskOwner.split("\\\\");
System.out.println(myarray[0]+" "+myarray[1]);
}
输出
test 00216243
test
00216243
参考资料:
只是为了补充
\
是正则表达式以及Java字符串文本中的特殊字符。如果您想在正则表达式中使用文字反斜杠,则必须将其加倍。
当您键入“\\”
时,这实际上是一个反斜杠(由于转义Java字符串中的特殊字符)
正则表达式也使用反斜杠作为特殊字符,您需要使用另一个反斜杠对其进行转义。所以最后,您需要将“\\”作为模式传递,以匹配单个反斜杠
public static void main(String[] args) {
String taskOwner = "test\\00216243";
String taskArray[] = taskOwner.split("\\\\");
System.out.println(taskArray[0]);
}
输出
test 00216243
test
00216243
再加上
\
是正则表达式以及Java字符串文本中的特殊字符。如果您想在正则表达式中使用文字反斜杠,则必须将其加倍。
当您键入“\\”
时,这实际上是一个反斜杠(由于转义Java字符串中的特殊字符)
正则表达式也使用反斜杠作为特殊字符,您需要使用另一个反斜杠对其进行转义。所以最后,您需要将“\\”作为模式传递,以匹配单个反斜杠
public static void main(String[] args) {
String taskOwner = "test\\00216243";
String taskArray[] = taskOwner.split("\\\\");
System.out.println(taskArray[0]);
}
输出
test 00216243
test
00216243
或
字符串部分[]=string1.split(“[^A-Za-z0-9]”)代码>string1.拆分(“[^a-z0-9]”)代码>在此部分中,您正在查找不在[a-zA-Z0-9]集合中的字符。^暗示不是。如果只拆分字符串“test\0216243”
,则此方法很好。将来,如果您还想打印此字符串,则需要使用以下方法。尝试打印它。或字符串部分[]=string1.split(“[^a-Za-z0-9]”)代码>string1.拆分(“[^a-z0-9]”)代码>在此部分中,您正在查找不在[a-zA-Z0-9]集合中的字符。^暗示不是。如果只拆分字符串“test\0216243”
,则此方法很好。将来,如果您还想打印此字符串,则需要使用以下方法。请尝试打印它。不应该将拆分(\\\\”
设置为拆分(\\\”
?op告诉您“test\00216243”
是一个精确的输入。为什么要更改输入\002
表示一个ascii字符。@StephenB No.它不应该被拆分(“\\”
,因为测试\\00216243
有两个反斜杠,所以每个字符有两个反斜杠。因此,split(“\\\”)
@AvinashRaj当您的输入中有转义序列时,您必须在处理它之前处理它。因此,在这里更改输入是必要的。不应该将split(\\\\”
设置为split(\\\”
?op告诉您“test\00216243”
是一个精确的输入。为什么要更改输入\002
表示一个ascii字符。@StephenB No.它不应该被拆分(“\\”
,因为测试\\00216243
有两个反斜杠,所以每个字符有两个反斜杠。因此,split(“\\\”)
@AvinashRaj当您的输入中有转义序列时,您必须在处理它之前处理它。因此,在这里更改输入是必要的。