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

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

將符號轉換為字符串中的不同符號

將符號轉換為字符串中的不同符號

www說 2023-03-02 10:41:14
假設我們有一個String myString = "abcde" 我們需要為整個字母表的每個字母分配一個其他符號,那么當一個字符串獲取值時,它們會按照指示自動轉換。示例:“a”變成“α”,“b”變成“β”,“c”變成“σ”,“d”變成“δ”,“e”變成“ε”我們從哪里開始?
查看完整描述

3 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

有幾種方法可以做到這一點,這里有兩種:

  • replaceAll()多次使用該方法 ( https://www.javatpoint.com/java-string-replaceall ) 它基本上允許您用其他內容替換字符串中每次出現的字符

  • 通過創建一個 Map 和一個函數,遍歷 String 并用其對應的字符替換每個字符

第一個更容易實現,但如果你有很多替換會更混亂,而第二個更容易實現和使用,但需要更多代碼才能工作。

就個人而言,我會將這兩者結合起來,針對每個地圖條目迭代一次:在一個循環中,對每個可替換字符for使用。replaceAll()


查看完整回答
反對 回復 2023-03-02
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

您可以運行一個循環來執行此操作,如下所示:


如果您的字符串很小并且字典可能包含更多值 -遍歷字符串:


Map<String,String> dict = new HashMap<>();

dict.put("a", "α");

dict.put("b", "β");

// .... and so on

for (char c : myString.toCharArray()) {

    String currentChar = String.valueOf(c);

    if (dict.containsKey(currentChar))

        myString = myString.replaceAll(currentChar,dict.get(currentChar));

}

如果你的字符串很大,而字典是固定的(比如,只包含 az 字符) -遍歷字典:


Map<String,String> dict = new HashMap<>();

dict.put("a", "α");

dict.put("b", "β");

// .... and so on

for (String key : dict.keySet()) {

        myString = myString.replaceAll(key,dict.get(key));

}


查看完整回答
反對 回復 2023-03-02
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

我已經寫了一個類似的函數來將重音轉換為相應的字母表,它可以幫助你


public static String ChangeAccentToCorrespondingChar(String string) // at the end of this function we'll only get these elements "^[a-z0-9_-]*$"

    {

        HashMap<Integer,Integer> asciiMap = new HashMap<Integer,Integer>(){{

            put(192, 97); put(193, 97);  put(194, 97);  put(195, 97);  put(196, 97);  put(197, 97);  put(224, 97); put(225, 97); put(226, 97); put(227, 97); put(228, 97); put(229, 97); put(257, 97); put(256, 97); put(170, 97); put(131, 102); put(142, 122); put(158, 122); put(159, 121); put(221, 121); put(253, 121); put(255, 121); put(161, 105); put(204, 105); put(205, 105); put(206, 105); put(207, 105); put(236, 105); put(237, 105); put(238, 105); put(239, 105); put(299, 105); put(162, 99); put(169, 99); put(199, 99); put(231, 99); put(174, 114); put(200, 101); put(201, 101); put(202, 101); put(203, 101); put(232, 101); put(233, 101); put(234, 101); put(235, 101); put(275, 101); put(208, 100); put(209, 110); put(241, 110); put(210,111); put(211,111); put(212,111); put(213,111); put(214,111); put(216, 111); put(240, 111); put(242, 111); put(243, 111); put(244, 111); put(245, 111); put(246, 111); put(248, 111); put(333, 111); put(215, 120); put(217, 117); put(218, 117); put(219, 117); put(220, 117); put(249, 117); put(250, 117); put(251, 117); put(252, 117); put(254, 98);

        }};


        StringBuilder changedString = new StringBuilder();


        char[] charArr = string.toCharArray();

        for (int i=0;i<charArr.length;i++) {

            char character = charArr[i];

            int ascii = character;

            if (asciiMap.containsKey(ascii)) {

                ascii = asciiMap.get(ascii);

                character = (char)ascii;

            } 


        return changedString.toString();

    }

在您的情況下,您想反向執行,將字母表示為重音,您可以簡單地更改上面 Hashmap 中的 ascii 值來檢索您的要求。在哈希映射中,鍵是原始字符的 ascii,值是新字符的 ascii。


查看完整回答
反對 回復 2023-03-02
  • 3 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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