Java用字母和数字解析一个整数
我处理的数据是一个字符串,后跟空格,然后是一个数值Java用字母和数字解析一个整数,java,string,int,Java,String,Int,我处理的数据是一个字符串,后跟空格,然后是一个数值 ncols 10812 nrows 10812 xllcorner -107.0005555556 yllcorner 36.99944444444 cellsize 9.2592592593e-05 我只是想读入数值。我知道从String到Integer或Double,我可以使用标准类型转换 Integer.valueOf(stringOfInteger); Double.value
ncols 10812
nrows 10812
xllcorner -107.0005555556
yllcorner 36.99944444444
cellsize 9.2592592593e-05
我只是想读入数值。我知道从String到Integer或Double,我可以使用标准类型转换
Integer.valueOf(stringOfInteger);
Double.valueOf(stringOfDouble);
为了得到数值,我尝试了以下测试:
BufferedReader br = new BufferedReader(new FileReader(path));
String line = br.readLine();
line.replace("[a-z]","");
line.replace(" ","");
System.out.println(line);
并且它输出ncols 10812
我还担心读取cellsize值,因为它有一个指数。您可以对每一行执行此操作:
...
String[] fields = line.split("\\s+");
String name = fields[0];
float value = Float.parseFloat(fields[1]);
...
此代码将使用空格作为分隔符拆分字段中的每一行。第一个字段是字符串
,因此您可以直接使用它(或忽略它)。第二个是Float
值,因此在使用它之前必须对其进行转换。如果您愿意,您可以使用Double
。试试这个
BufferedReader br = new BufferedReader(new FileReader(path));
String line = null;
while ((line = br.readLine()) != null) {
// split each line based on spaces
String[] words = line.split("\\s+");
//first word is name
String name = words[0];
// next word is actual number
Double value = Double.valueOf(words[1]);
System.out.println(name + ":" + value);
}
// don't forget to close the stream
br.close();
输出:
ncols:10812.0
nrows:10812.0
xllcorner:-107.0005555556
yllcorner:36.99944444444
cellsize:9.2592592593E-5
如果您想要所有数值,请在空格上拆分,第二项将包含您的数值。然后,您可以根据需要进行任何转换,而不必担心删除任何指数
String[] data = new line.split(" ");
//remove all the spaces from the second array for your data
data[1] = data[1].replaceAll("\\s", "");
//parse to whatever you need data[1] to be
您可以使用
Java
中的split
函数,如下所示:
String [] dataArr = data.split("[ \t]+"); //assumes @data is you data string variable name
然后,dataArr
将如下所示:
dataArr[0] = "ncols"
dataArr[1] = "10812"
dataArr[2] = "nrows"
dataArr[3] = "10812"
.
.
.
dataArr[n - 1] = "9.2592592593e-05" // @n is the size of the array
然后,您可以使用
Integer.parseInt(String str)
将数字数据解析为整数。(1)replace
不使用正则表达式,replaceAll
使用。(2) 字符串是不可变的,replace
的结果不会影响原始字符串,但会返回带有替换内容的新字符串谢谢!效果很好。总有一天我应该坐下来学习正则表达式。不客气!正则表达式改变了我的生活:)