簡體   English   中英

從文件讀取時為String.contains()

[英]String.contains() when reading from file

我正在逐行讀取文件,然后想檢查該字符串是否包含另一個字符串,因此我使用String.contains方法,但它始終返回false。

我試圖分割輸入行(然后使用String.containsString.equals ),因為要檢查的單詞是該行的第一行。

我要檢查的字符串是<now>並進行拆分,我注意到即使該行包含該字符串,我也會出錯。

奇怪的事實是字符串已正確打印出來,但其長度大於字符串<now> (即使我使用replace來確保沒有空格),但我想這是我的問題。 我認為這取決於文件的編碼,但是如果是這樣,有什么解決方案嗎?

該文件是另一個程序(Praat)的輸出,因此我無法以其他方式保存它。

line = inFile2.nextLine();
String[] w = line.split("[\t\\s]");
String checking = w[0];
checking.replace(" ","");
checking.replace("/t","");
String st ="<now>";
System.out.println(!checking.equals(st)); //returns always true
System.out.println(st.length()); //returns 5
System.out.println(checking.length());  //returns 11
System.out.println(checking); //it prints <now> correctly

輸入中的字符串類似於: <now> 236 62 elena information-relation

字符串是不可變的

注意: String類是不可變的,因此一旦創建它,​​就不能更改String對象。 String類有許多方法,下面將討論其中的一些方法,這些方法似乎可以修改字符串。 由於字符串是不可變的,因此這些方法的真正作用是創建並返回一個包含操作結果的新字符串

因此應該是:

Checking = Checking.replace(" ","");
Checking = Checking.replace("/t","");

甚至更好( 方法鏈接 ):

Checking = Checking.replace(" ","").replace("/t","");

另外,請遵守命名約定

字符串是不可變的,因此您需要分配。

Checking = Checking.replace(" ","");
Checking = Checking.replace("/t","");

要使其更短,您還可以執行以下操作:

String Checking = W[0].replace(" ", "").replace("/t", "");

當然,這取決於您的喜好。

我解決了使用UTF-8編碼重新保存文本文件的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM