如何从此文件中的数据中删除字符,以便总结数字?
Alice Jones,80,90,100,95,75,85,90,100,90,92
Bob Manfred,98,89,87,89,9,98,7,89,98,78
我想这样做,所以对于每一行,它将删除所有字符但不删除整数。
答案 0 :(得分:1)
当然,你可以使用split方法,提供“,”作为参数,但不是全部。
诀窍是将每个文本文件的行放入ArrayList中。一旦你有了,转移Pseudocode:
1)将文本文件的每一行放在ArrayList中 2)对于每一行,使用“,”拆分为数组 3)如果数组的大小大于1,则意味着有数字要总结,否则只有名称位于数组上,你应该继续下一行 4)因此大小大于1,通过Split函数生成的String []数组内的字符串进行迭代,从1到<大小(这将排除名称字符串本身)
5)使用Integer.parseInt(迭代的数字作为String)并总结
你去了
数字格式如果字符串不是数字但是您将每行放入ArrayList并排除名称,那么就会出现异常,因此应该没有问题:)
答案 1 :(得分:1)
以下代码可能对您有用,请尝试运行一次,
public static void main(String ar[])
{
String s = "kasdkasd,1,2,3,4,5,6,7,8,9,10";
int sum=0;
String[] spl = s.split(",");
for(int i=0;i<spl.length;i++)
{
try{
int x = Integer.parseInt(spl[i]);
sum = sum + x;
}
catch(NumberFormatException e)
{
System.out.println("error parsing "+spl[i]);
System.out.println("\n the stack of the exception");
e.printStackTrace();
System.out.println("\n");
}
}
System.out.println("The sum of the numbers in the string : "+ sum);
}
甚至形式的字符串&#34; abcd,1,2,3,asdas,12,34,asd&#34;会给你数字的总和
答案 2 :(得分:0)
您需要将每一行拆分为一个String数组,并从索引1
开始解析数字String[] arr = line.split(",");
for(int i = 1; i < arr.length; i++) {
int n = Integer.parseInt(arr[i]);
...
答案 3 :(得分:0)
好吧,如果你知道它是一个CSV文件,你可以读取该行,执行string.split(','),然后忽略结果数组中第一个返回的字符串。见Evgenly的答案。
编辑:这是完整的程序:
class Foo {
static String input = "Name,2,1,3,4,5,10,100";
public static void main(String[] args) {
String[] strings = input.split(",");
int result=0;
for (int i = 1; i < strings.length; i++)
{
result += Integer.parseInt(strings[i]);
}
System.out.println(result);
}
}
(哇,我从来没有写过程序,之前没有导入任何东西。)
这是输出:
125
如果你对解析文件没兴趣,只想删除第一个字段;然后拆分它,忽略第一个字段,然后重新加入剩余的字段。
String[] fields = line.split(',');
StringBuilder sb = new StringBuilder(fields[1]);
for (int i=2; i < fields.length; ++i)
sb.append(',').append(fields[i]);
line = sb.toString();
您还可以使用模式(正则表达式):
line = line.replaceFirst("[^,]*,", "");
当然,这假定第一个字段不包含逗号。如果是这样,事情变得更加复杂。我假设逗号以某种方式逃脱。
答案 4 :(得分:0)
试试这个:
String input = "Name,2,1,3,4,5,10,100";
String[] strings = input.split(",");
int result=0;
for (int i = 1; i < strings.length; i++)
{
result += Integer.parseInt(strings[i]);
}
答案 5 :(得分:0)
有几个CsvReader / Writers可能对我有助于处理CSV数据。除此之外:
在开始处理之前加载整个文件不是一个好主意,因为你做了两件坏事:
答案 6 :(得分:0)
假设字符串的格式是固定的。
String s = "Alice Jones,80,90,100,95,75,85,90,100,90,92";
起初,我会摆脱角色
Matcher matcher = Pattern.compile("(\\d+,)+\\d+").matcher(s);
int sum = 0;
获取整数字符串后,用逗号分隔,我将它们拆分为字符串数组,将其解析为整数值并求和:
if (matcher.find()){
for (String ele: matcher.group(0).split(",")){
sum+= Integer.parseInt(ele);
}
}
System.out.println(sum);