亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刪除字符串的未定義部分

刪除字符串的未定義部分

DIEA 2021-12-01 15:49:02
我的代碼:import java.util.*;class Tester {public static void main(String[] args){    Scanner nameText = new Scanner(System.in);    System.out.println("What is your name ?");    String text = nameText.nextLine();    System.out.println("Hello " + text);}}我的問題:讓我們想象一下,此代碼中的用戶輸入以下內容之一:我叫弗雷德我叫弗雷德。你好,我叫弗雷德。嘿,我是弗雷德!為了便于使用,讓我們假設這些是唯一可能的響應。我只想返回這個詞fred。我覺得 if 語句應該能夠完成任務,大致如下:如果文本包含字符串"Hi, my name is"或"My name is"或Hi, I'm fred等,刪除響應的那部分,并返回僅不包含在,如果在語句中的獨特字。如果這是基本的,我深表歉意,但由于某種原因我無法弄清楚。我希望能夠檢查要過濾掉的可能語句的無限列表。
查看完整描述

2 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

您可以使用該replace()方法替換您不感興趣的字符串部分,例如:


String[] replaceInResponse = new String[] { "Hey I am", "My name is" };


String response = "Hey I am mark";


for (String s : replaceInResponse) {

    if (response.contains(s)) {

        response = response.replace(s, "").trim();

        break;

    }

}


System.out.println(response); // Prints `mark`


查看完整回答
反對 回復 2021-12-01
?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

您可以嘗試檢測一個常見模式并設計一個正則表達式來處理該模式,而不是完全處理這些句子。例如,在您的所有句子中,名稱是句子中的最后一個單詞。此外,名稱是唯一以大寫字母開頭的多字符單詞。


String[] tests = { 

        "My name is Fred",

        "My name is Fred.",

        "Hi, My name is Fred.",

        "Hey, I am Fred!",

};


Pattern p = Pattern.compile("\\b([A-Z][a-z]+)[^\\w]*$");

for (String test : tests) {

    Matcher m = p.matcher(test);

    m.find();

    System.out.println(m.group(1));

}

所有測試的輸出是Fred. 這些規則也應該適用于該輸入的其他變體,雖然肯定不是全部,但也許您可以想出更好的方法。


查看完整回答
反對 回復 2021-12-01
  • 2 回答
  • 0 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號