[英]Splitting a Java String with '.'
我有
1. This is a test message
我想要打印
This is a test message
我在尝试
String delimiter=".";
String[] parts = line.split(delimiter);
int gg=parts.length;
比要打印数组
for (int k ;k <gg;K++)
parts[k];
但我的gg总是0.我错过了什么。 我只需要删除数字和。 和白色空间
该数字可以是1(或)5位数
你正在使用"."
作为一个分隔符,你应该打破它的特殊含义.
焦炭。
的.
正则表达式中的char是“任何字符”,所以你的分裂只是根据“任何字符”分裂,这显然不是你所追求的。
使用"\\\\."
作为分隔符
有关预定义字符类的更多信息,您可以查看本教程 。
有关正则表达式的更多信息(包括上述内容),您可以尝试本教程
编辑 :
PS使用String.replaceAll()
方法,可以使用单行程序实现(删除数字)。
System.out.println(line.replaceAll("[0-9]+\\.\\s+", ""));
将提供输出
This is a test message
对于您的输入示例。
这个想法是: [0-9]
是任何数字。 - +
表示可以有任意数量,大于0. \\\\.
是一个点(如上所述断开), \\\\s+
至少是一个空格。
全部用空字符串替换。
但请注意,对于字符串,例如: "1. this is a 2. test"
- 它将提供“这是一个测试”,并删除“2.”,所以请仔细考虑这是否确实是你所追求的。
使用以下代码..
String delimtor="\\."; // use this because . required to be skipped
String[] parts = line.split(delimtor);
为你的for循环。
for (int k=0 ;k <gg.length;K++)
parts[k];
试试这个
String delimtor = "\\.";
“” 对正则表达式有特殊含义。
如果您只是想删除前缀号码,那么您可以在一行中完成。 不确定你是否真的要拆分多个点。 如果它只是前缀,那么你可以在一行中完成
String s = "1. with single digit";
String s2 = "999. with multiple digits";
String s3 = "999. with multiple digits . and . dots";
assertEquals("with single digit", (s.substring(s.indexOf(".") + 1).trim()));
assertEquals("with multiple digits", (s2.substring(s2.indexOf(".") + 1).trim()));
assertEquals("with multiple digits . and . dots", (s3.substring(s3.indexOf(".") + 1).trim()));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.