繁体   English   中英

用'。'拆分Java字符串。

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM