[英]How to spilt a sentence using words in StringTokenizer (JAVA)
我有一個句子,其中的作者姓名用“和”一詞分隔。 我想刪除“和”並用 & 代替。 有沒有一種快速簡便的方法來做到這一點。 我嘗試過掃描儀和 useDelimiter()、StringTokenizer 和 split。
例如,這是我想要拆分的內容(我從計算機上的文件中獲取此信息):
author={J. Park and J. N. James and Q. Li and Y. Xu and W. Huang},
所以我使用了:
String author = nextLine.substring(nextLine.indexOf("{") + 1, nextLine.lastIndexOf("}"));
StringTokenizer st2 = new StringTokenizer(author, " and ");
while(st2.hasMoreTokens()){
author += st2.nextToken() + " & ";
}
我得到的輸出如下:
J. Park and J. N. James and Q. Li and Y. Xu and W. HuangJ. & P & rk & J. & N. & J & mes & Q. & Li & Y. & Xu & W. & Hu & g & .
我不完全確定我做錯了什么。 在放棄之前,我昨晚在谷歌上搜索了 2 個小時。 我曾嘗試使用“[and]”、“and”、“^[and]$”,但沒有成功。
如果您只想用“&”替換“and”,您可以簡單地在字符串上調用relaceAll()
方法。
嘗試這個。
public class Test{
public static void main(String []args){
String author= "J. Park and J. N. James and Q. Li and Y. Xu and W. Huang";
System.out.println(author);
author = author.replaceAll("\\band\\b", "&");
System.out.println(author);
}
}
為了完整replaceAll()
,另一種方法是使用replaceAll()
String author="{J. Park and J. N. James and Q. Li and Y. Xu and W. Huang}";
author = author.replaceAll( " and ", " & " );
會給你同樣的結果。 注意" and "
周圍的空格。 這些可以防止您將“Rosaland”之類的詞替換為“Rosal&”。 " & "
周圍的空格是為了保持與以前相同的間距。 沒有它們,你會得到"J. Park&J. N. James"
。
僅供參考: "\\b"
是程序員的工具。 它使用的“詞邊界”包括典型的“程序員詞”。 快速檢查說它匹配任何不是 [A-Za-z0-9_] 的東西,所以如果你有一個像“Johhan Fu-and-leson”這樣的名字,它會匹配“-”並替換它。 不太可能發生,但要記住一些事情。
此外,像“Lindy Harlaown_and Fate”這樣的字符串不會匹配 _ 並且不會發生替換。 再次要記住的事情。
正則表達式不是魔術,也不會讀懂你的想法,它的默認匹配可能不適合你的特定需求。
使用replaceAll
方法。 例如:
String s = "J. Park and J. N. James and Q. Li and Y. Xu and W. Huang";
s = s.replaceAll("\\band\\b", "&"); // "J. Park & J. N. James & Q. Li & Y. Xu & W. Huang"
\\b
單詞邊界確保如果名稱包含and
(例如,“Band”),則不會被觸及。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.