[英]swapping column from a text file in Java
我在使用此代碼時遇到了一些問題。 我需要在代碼中寫上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
,並交換字段fieldA
和fieldB
嗎?
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()
方法使用delim
作為分隔符(解釋為正則表達式;有關此的假設,請參見下文.split()
將input
分解為一個數組。 然后交換兩個相關的(零索引)字段,並使用.join()
重建String
。
請注意,最后一行( .join()
)需要.join()
。如果您沒有Java 8,則可以使用Apache Commons Lang中的StringUtils.join
。
我在這里還假設您的delim
采用.split()
方法的正確格式,也就是說,它是一個字符串文字,不包含轉義符和其他正則表達式字符。 如果它是文本文件中的定界符(通常是逗號,空格或制表符),那么這似乎是一個足夠合理的假設。 它進一步假定定界符不會出現在input
其他地方,引號之內。 您沒有提到引號。 您需要添加一些內容以澄清是否希望能夠處理此類問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.