Java の .equals 関数に問題があります。問題は、2 つの文字列が物理的な目 (異なる形式) に見えても、同じではないことにあると確信しています。しかし、私はそれをデバッグすることができないようです。
基本的に、これは .CSV を読み取り、最初の 1 ~ 3 語から数字を除いたものを解析するために使用される短いコードです。もっとうまくコーディングできることはわかっていますが、一度しか実行されないものです。正常に動作しますが、現在動作していない重複を削除することを想定しています。これを修正する方法に光を当てていただければ幸いです。
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class ReadCSVTest {
public static void main(String[] args) {
ReadCSVTest obj = new ReadCSVTest();
obj.run();
}
public void run() {
String csvFile = "C:/Users/mrx/Documents/Standard Software.csv";
BufferedReader br = null;
String line = "";
String cvsSplitBy = ",";
int count = 0;
String duplicate = "";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String[] product = line.split(cvsSplitBy);
String app = product[0];
app = app.toUpperCase();
app = app.replaceAll("[^A-Z -]", "");
app = app.trim();
if(!app.equals(duplicate)) {
if(app.contains(" ")){
String words[] = app.split(" ");
String firstTwo = words[0] + " " + words[1];
if(firstTwo.contains("MICROSOFT")){
if(words.length > 2){
String firstThree = words[0] + " " + words[1] + " " + words[2];
duplicate = firstThree.trim();
System.out.println("\"" + duplicate + "\", ");
count++;
}
else{
duplicate = firstTwo.trim();
System.out.println("\"" + duplicate + "\", ");
count++;
}
}
else{
duplicate = firstTwo.trim();
System.out.println("\"" + duplicate + "\", ");
count++;
}
}
else{
duplicate = app.trim();
System.out.println("\"" + duplicate + "\", ");
count++;
}
}
}
}
catch (FileNotFoundException e){ e.printStackTrace();}
catch (IOException e){ e.printStackTrace();}
finally{
if (br != null) {
try{ br.close(); }
catch (IOException e) { e.printStackTrace();}
}
}
System.out.println("Done");
System.out.println(count + " Programs");
}
}