gpt4 book ai didi

java - 在 Java 中交换文本文件中的列

转载 作者:行者123 更新时间:2023-12-01 12:22:16 24 4
gpt4 key购买 nike

我在使用这段代码时遇到了一些问题。我需要编写一段代码,其中显示 SwapField 来显示文本文件中的列,并将第 2 列交换为第 1 列。

public static void main(String[] args) {
int lineNum = 0;
String delimiter = " ";

if (args.length != 3) {
System.out.println("USAGE: java SwapColumn fileName column# column#");
System.exit(-1);
}
String dataFileName = args[0];
String columnAText = args[1];
String columnBText = args[2];
int columnA = Integer.parseInt(columnAText);
int columnB = Integer.parseInt(columnBText);

File dataFile = new File(dataFileName);
Scanner input;
String outputText = null;
System.out.printf("dataFileName=%s, columnA=%d, columnB=%d\n",
dataFileName, columnA, columnB);
try {
input = new Scanner(dataFile);
while (input.hasNextLine()) {
String inputText = input.nextLine();
lineNum++;

outputText = swapFields(inputText, columnA, columnB, delimiter);
System.out.printf("%d: %s\n", lineNum, outputText);
}
} catch (FileNotFoundException FNF) {
System.out.printf("file not found: %s\n", dataFileName);
}
}

static String swapFields(String input, int fieldA, int fieldB, String delim) {
String outputBuffer = "";
//code needed here

return outputBuffer;
}

最佳答案

好的,所以您希望该方法接受由 delim 分隔的String input,并交换字段 fieldAfieldB

static String swapFields(String input, int fieldA, int fieldB, String delim) {
String[] bits = input.split(delim);
String temp = bits[fieldA];
bits[fieldA] = bits[fieldB];
bits[fieldB] = temp;
return String.join(delim, bits);
}

在此代码中,.split() 方法将 input 分解为一个数组,使用 delim 作为分隔符(解释为正则表达式;有关此的假设请参见下文)。然后交换两个相关(零索引)字段,并使用 .join() 重建 String

请注意,最后一行(.join())需要 Java 8。如果您没有 Java 8,则可以使用 Apache 中的 StringUtils.join通用语言。

我还假设您的 delim 的格式适合 .split() 方法,也就是说它是一个字符串文字,不会' t 包含转义字符和其他正则表达式字符。如果它是文本文件中的分隔符(通常是逗号、空格或制表符),这似乎是一个足够合理的假设。它还假设分隔符不会出现在输入中的其他位置、引号内或其他位置。你还没有提到任何关于报价的事情;如果您希望能够处理此类事情,则需要添加一些内容来澄清。

关于java - 在 Java 中交换文本文件中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26590141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com