【发布时间】:2015-05-17 14:57:23
【问题描述】:
我正在使用 Apache POI 从 .doc 文件中读取,因此,我有一个字符串数组列表,其中包含来自原始文档格式的大量换行符和制表符
我需要检查一个字符串是否包含一个整数,因为它是第一个字符。但是字符串通常如下所示:
现在位置 [3] 的第一个字符串很好,即使它稍后包含一个整数,但是位置 [4] 的字符串以 \n\r\n5.2 开头
因此以整数开头,是不可接受的,应该忽略。
但是,我似乎找不到检查这些字符串中的一个是否以整数开头的方法。我尝试使用 java 的
theString.replaceAll("\\\\n","");
theString.replaceAll("\\\\r","");
然而这似乎失败了,我尝试使用正则表达式来确定字符串本身是否以整数开头无济于事,因为制表符和换行符的数量各不相同。
有没有人知道为什么我可以确定字符串(在所有换行符和制表符之后)是否以整数开头?
第二个例子:
使用代码:
tempLineBreakRemoval = listoflines.get(x);
tempLineBreakRemoval = tempLineBreakRemoval.replaceAll("\\\n", "");
//Selection Statement to only add to "tempCommentString" if does not start with integer
tempCommentString += listoflines.get(x);
x++;
【问题讨论】:
-
Yet this seemed to fail。你的意思是replaceAll方法没有做它应该做的事情吗?这可能是因为您需要将replaceAll的返回值重新分配给theString,因为Java 中的String是不可变的。另外,你到底为什么要使用\\\\n和\\\\r? -
另外,
"\\\\n"匹配文字反斜杠,后跟字母n- 如果这些是实际的换行符,则应将"[\r\n]+"替换为""。 -
trim还删除了前导和尾随空格,例如theString = theString.trim(); -
@ChetanKinger replaceAll 没有去掉 \n 或 \r 字符,\\\ 是用来解析特殊字符的,\不是java字符串中的转义字符吗?
-
是的,但你只需要 \\ 来制作一个 \ 并且 n 是一个简单的字母。
标签: java regex string line-breaks