例如,我從文本文件中提取文本字符串,我需要這些單詞來形成一個數組。然而,當我做了所有以逗號(,)或句號(。)結尾的單詞,或者甚至附有括號(這完全正常)時。如何從Java中的特定字符串中刪除特定字符?
我想要做的是擺脫這些字符。我一直試圖用Java中的那些預定義的String方法來做到這一點,但我無法繞過它。
例如,我從文本文件中提取文本字符串,我需要這些單詞來形成一個數組。然而,當我做了所有以逗號(,)或句號(。)結尾的單詞,或者甚至附有括號(這完全正常)時。如何從Java中的特定字符串中刪除特定字符?
我想要做的是擺脫這些字符。我一直試圖用Java中的那些預定義的String方法來做到這一點,但我無法繞過它。
用途:
String str = "whatever";
str = str.replaceAll("[,.]", "");
replaceAll需要regular expression。這:
[,.]
...尋找每個逗號和/或期間。
您無法修改Java中的字符串。它們是不可改變的。你所能做的就是創建一個新字符串,它是舊字符串的子字符串,減去最後一個字符。
在某些情況下,StringBuffer可能會幫助您。
謝謝。我設法做這樣的事情: [code] for(int i = 0; i
重新分配變量的子字符串:
s = s.substring(0, s.length() - 1)
而且解決你的問題的另一種方法:你可能還需要考慮使用StringTokenizer讀取該文件,並設置分隔符是字符你不不想成爲單詞的一部分。
這正是我所做的,它的工作:) 順便說一句我忘了提到,我的導師嚴格禁止使用StringTokenizer類。 – 2009-12-25 23:27:06
這個微型基準測試表明substring()在這種情況下可能比正則表達式更快:http://groups.google.com/group/comp.lang.java.programmer/msg/cf4e57a09eb8ff7c – trashgod 2009-12-25 23:45:00
@trashgod - 你不需要需要一個microbenchmark來告訴你。只是少量的常識...並查看'String.substring()'的源代碼。 – 2009-12-26 01:12:02
請注意,單詞邊界還取決於語言環境。我認爲使用標準的java.text.BreakIterator來完成它的最好方法。這裏是java.sun.com教程的一個例子。
import java.text.BreakIterator;
import java.util.Locale;
public static void main(String[] args) {
String text = "\n" +
"\n" +
"For example I'm extracting a text String from a text file and I need those words to form an array. However, when I do all that some words end with comma (,) or a full stop (.) or even have brackets attached to them (which is all perfectly normal).\n" +
"\n" +
"What I want to do is to get rid of those characters. I've been trying to do that using those predefined String methods in Java but I just can't get around it.\n" +
"\n" +
"Every help appreciated. Thanx";
BreakIterator wordIterator = BreakIterator.getWordInstance(Locale.getDefault());
extractWords(text, wordIterator);
}
static void extractWords(String target, BreakIterator wordIterator) {
wordIterator.setText(target);
int start = wordIterator.first();
int end = wordIterator.next();
while (end != BreakIterator.DONE) {
String word = target.substring(start, end);
if (Character.isLetterOrDigit(word.charAt(0))) {
System.out.println(word);
}
start = end;
end = wordIterator.next();
}
}
來源:http://java.sun.com/docs/books/tutorial/i18n/text/word.html
您可以使用replaceAll()
方法:
String.replaceAll(",", "");
String.replaceAll("\\.", "");
String.replaceAll("\\(", "");
等。
replaceAll會替換所有字符而不是最後一個字符。 – 2014-04-24 04:37:36
要刪除的最後一個字符做的Mark Byers說
s = s.substring(0, s.length() - 1);
此外,另一種刪除不需要的字符的方法是使用.replace(oldCharacter, newCharacter)
方法。
爲:
s = s.replace(",","");
和
s = s.replace(".","");
謝謝,它對我很有幫助 – 2009-12-25 23:29:09
最好的方法是什麼馬克拜爾斯解釋說:
s = s.substring(0, s.length() - 1)
例如,如果我們要替換\空間「 「與ReplaceAll,它不能正常工作
String.replaceAll("\\", "");
或
String.replaceAll("\\$", ""); //if it is a path
我不認爲這是一個不好的答案,但有一點不是INFALLLIBLE。試試 」」 – 2013-05-28 20:43:03
謝謝:) 我知道這不是什麼困難,只是無法繞過它。 – 2009-12-25 23:23:03
已更新已斷開的鏈接'replaceAll()' – raffian 2013-12-17 03:45:07
章程文字中的字符太多。我如何實際輸入這個? – 2015-04-29 20:42:23