簡體   English   中英

如何在 StringTokenizer (JAVA) 中使用單詞溢出句子

[英]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.

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