从带有char和int的输入文件中拆分字符串

时间:2018-02-01 03:42:44

标签: java

我正试图以某种方式从文件中分割一些输入代码,并且完全失去了如何做到这一点。我的文件读取不正确。我只是不确定如何按照我想要的方式拆分它。我目前设置如下(下图)并且工作正常我只是想知道是否有一种方法可以再次拆分它或者其他东西,文件中的行看起来如下: “Y8 T L6 L2 T Y3”数字或字母可能会有所不同,可能有也可能没有数字,我会设置它以便我可以将每个字符和数字分成自己的字符串[ ], 我怎样才能做到这一点?现在我设置它的方式是将数字和字符一起取出,我不希望这样,因为我需要访问数值,谢谢。

代码

{
    File file = new File(FileName);
    Scanner scanner = new Scanner(file);
    String currentLine = scanner.nextLine();
    String[] seperated = currentLine.split(" ");
}

2 个答案:

答案 0 :(得分:0)

如果您只想拥有两个独立的数组,那么您可能不需要拆分。只需删除空格并将数字与其他字符分开。

import java.util.ArrayList;
import java.util.List;

public class App {

    public static void main(String[] args) {
        String currentLine = "Y8 T L6 L2 T Y3";
        //Remove the spaces
        String withoutSpaces = currentLine.replace(" ", "");
        String[] characters = withoutSpaces.split("");
        List<Integer> numeric = new ArrayList<>();
        List<String> character = new ArrayList<>();
        for (String each : characters) {
            if (isNum(each)) {
                numeric.add(Integer.parseInt(each));
            } else {
                character.add(each);
            }
        }
        Integer[] numarray = numeric.toArray(new Integer[numeric.size()]);
        String[] chararray = character.toArray(new String[character.size()]);

        for(Integer num: numarray){
            System.out.println(num);
        }
        for(String charac: chararray){
            System.out.println(charac);
        }

    }

    public static boolean isNum(String strNum) {
        boolean ret = true;
        try {

            Double.parseDouble(strNum);

        } catch (NumberFormatException e) {
            ret = false;
        }
        return ret;
    }

}

答案 1 :(得分:0)

你确实可以继续拥有你拥有的东西。由于您已经读取了所有内容并将其分成String数组,因此您可以循环遍历数组中的元素并检查它们是否跟随它们。我要发布的代码假定每个输入是1)单个字母或2)单个字母后跟一个数字:

for (String temp : seperated) {
    int numberIWant;
    if (temp.length() == 2) {
        numberIWant = temp.charAt(1);
    }
    //Do something with this number, if you need the letter as well
    //Use temp.charAt(0)