我正在尝试从配置文件中读取空格分隔值。我正在阅读PostgreSQL配置文件pg_hba.conf
文件,其中下面是该文件的数据:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
我必须得到上面的值host,all,all,127.0.0.1 / 32,md5并修改并将修改后的值写回同一个文件。
以下是我用来读取文件的代码:
BufferedReader in = new BufferedReader(new FileReader("pg_hba.conf"));
String str;
str = in.readLine();
while ((str = in.readLine()) != null) {
System.out.println(str);
}
in.close();
如何获取这些空格分隔值? 是否可以使用相同的格式再次写入,即将相同的空间量写回此文件?
我们可以使用Property
类吗?
答案 0 :(得分:3)
str.split("\\s+");
另一种可能性是使用更像“{3}}的”高级“库”,为这些任务提供良好的实用程序类,例如Google Guava:
Splitter.on(' ').split("foo bar")
答案 1 :(得分:0)
您可以使用String.split()方法。
String[] sa= str.split(" ");
答案 2 :(得分:0)
您应该使用带有自定义分隔符的csv阅读框架。你会更快,并且维护的代码更少。
Open CSV看起来最成熟,但您也应该注意apache commons csv。
答案 3 :(得分:0)
根据您的问题,我假设输入字符串的格式不会改变。基于此提供了代码片段。
如何获取这些空格分隔值?
String values[] = new String[9];
bool addingSpace = false;
String value = "";
int ind = 0;
for(int i=0; i<str.length; i++)
{
char indexValue = str.charAt(i);
if(Character.isWhitespace(indexValue))
{
if(!addingSpace)
{
values[ind++] = value;
value = "";
}
addingSpace = true;
}
else if(Character.isLetter(indexValue))
{
if(addingSpace)
{
values[ind++] = value;
value = "";
}
addingSpace = false;
}
value += indexValue;
}
是否可以使用相同的格式再次写入,即将相同的空间量写回此文件?
String values[] = new String[9];
此数组包含完全没有的所有数据。两者之间的空间。如果要写下文件,可以使用相同的数组。