首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8编程:读取..ini文件并尝试删除换行符

Java 8编程:读取..ini文件并尝试删除换行符
EN

Stack Overflow用户
提问于 2015-05-02 11:02:36
回答 2查看 823关注 0票数 7

我在使用Netbeans IDE。对于一个学校项目,我需要阅读一个..ini文件,并获得一些具体的信息。

我不使用ini4j的原因是:

  • 我有一个部分的键值是相同的。
  • 我有一些部分没有键值输入,我必须从

例ini-file:

代码语言:javascript
复制
[Section]

Object1 5 m

number = 12

Object2 6 m
;Comment followed by white line

number = 1\

4

\意味着需要忽略下一个命令或白行,因此ini文件的最后一部分实际上意味着:number = 14

我的任务是:我需要将具有对应长度(米)和数字的弹出名称存储在一个字符串中,如下所示: Object1的长度为1m,数字为12

我的问题是:我使用带有分隔符//Z的扫描器将整个文件存储到一个字符串中。这是可行的(如果我打印出字符串,它给出了上面的示例)。

我试过这段代码:

代码语言:javascript
复制
String file = file.replaceAll("(\\.)(\\\\)(\\n*)(\\.)","");

如果我只尝试删除换行符:

代码语言:javascript
复制
String file = file.replace("\n","");
System.out.println(file);

我得到一个空输出。

提前谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-02 11:50:36

您的问题是您需要在Java和正则表达式中封装\,所以您需要对它们进行两次转义。这意味着,如果您想去掉空行,就必须这样编写它:

代码语言:javascript
复制
file = file.replaceAll("\\n+", "\n");

如果您知道行尾的\总是后面跟着一个空行,那么这意味着它实际上后面是两个新行字符,这将提供以下内容:

代码语言:javascript
复制
file = file.replaceAll("\\\\\\n\\n", "");

或者(是一样的):

代码语言:javascript
复制
file = file.replaceAll("\\\\\\n{2}", "");

\\\\将导致正则表达式中的\\,因此它匹配\\\n将成为\n并匹配新的行字符。

正如@Bohemian所提到的,最好修复ini文件。标准使一切变得更容易。如果您坚持使用自己的文件扩展名,因为它实际上是另一种格式。

还可以编写一个直接提取值的正则表达式:

代码语言:javascript
复制
file = file.replaceAll("\\\\\\n\\n", "");
Pattern pattern = Pattern.compile("^ *([a-zA-Z0-9_]+) *= *(.+?) *$");
Matcher matcher = pattern.matcher(file);
while (matcher.find()) {
  System.out.println(matcher.group(1)); // left side of = (already trimmed)
  System.out.println(matcher.group(2)); // right side of = (already trimmed)
}

这比逐个读行容易,但性能可能更差。无论如何,这通常不是一个问题,因为ini文件往往很小。

票数 0
EN

Stack Overflow用户

发布于 2015-05-02 14:08:34

你在正确的道路上。但逻辑是错误的。实际上,逻辑需要\n来识别ini文件中的新值。

我建议您不要将整个文件读入字符串。为什么?您仍将一个接一个地处理文件中的行。现在,您可以逐个读取整个文件,然后拆分成单个字符串进行分析。为什么不用扫描器逐行读取文件并分析这些行呢?

当您使用单个行时,只需跳过空行。它解决了你的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30001497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档