你會建議正常化Java中的文本,例如如何規範化/拋光Java中的文本?
String raw = " This is\n a test\n\r ";
String txt = normalize(raw);
assert txt == "This is a test";
我在想StringUtils
.replace()
和.strip()
方法,但也許有一些更簡單的方法是什麼方法。
你會建議正常化Java中的文本,例如如何規範化/拋光Java中的文本?
String raw = " This is\n a test\n\r ";
String txt = normalize(raw);
assert txt == "This is a test";
我在想StringUtils
.replace()
和.strip()
方法,但也許有一些更簡單的方法是什麼方法。
試試下面的最後空間,如果它僅僅是一個空格的事情
String txt = raw.replaceAll("\\s+", " ").trim();
要刪除第一個和你正在尋找串#TRIM()
http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#trim()
這不會像字符串OP所要求的那樣刪除字符串中間的換行符。 – 2011-03-29 12:28:16
是的,這是事實。我很早就給出了答案。我在編輯它。 – 2011-03-29 12:29:15
如果規範化意味着替換空格,製表符,換行符和換行符序列,那麼我會考慮使用一個簡單的正則表達式和String.split()來創建單獨的單詞,然後將它們附加到具有您想要的間距的StringBuilder中在之間。如果性能真的很重要,另一種方法是簡單地遍歷字符串的字符,查看每個字符並決定是將它追加到StringBuilder還是放棄它。
取決於你想要去除的究竟是什麼。如果它的某些特定字符,然後replaceAll()將由@Yaneeve發佈。 如果需求更一般,那麼你可能想看看normalize the string using the Normalizer。
private static String normalize(String raw) {
StringBuilder sb = new StringBuilder();
Scanner scanner = new Scanner(raw);
while (scanner.hasNext()) {
sb.append(scanner.next());
sb.append(' ');
}
sb.deleteCharAt(sb.length() - 1);
return sb.toString();
}
這樣我將刪除**全部**空格。相反,我需要他們中的一些保持原封不動:) – yegor256 2011-03-29 12:31:15
對不起@ yegor256你是對的,修復它 – Yaneeve 2011-03-29 12:35:39