第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何將字符串中的字母編碼為數(shù)字

如何將字符串中的字母編碼為數(shù)字

烙印99 2023-12-13 10:11:18
我想做的是將字符串中的數(shù)字根據(jù)字母表編碼為數(shù)字,并保留數(shù)字不變。所以“abc123”將是“123123”。在 javascript 中找到了解決方案,但似乎無法適應(yīng) java。任何幫助都會(huì)很棒,謝謝。java 函數(shù)會(huì)是這樣的import java.util.*; import java.io.*;class Main {  public static String NumberEncoding(String str) {    ***call javascript function or translate it into java  }  public static void main (String[] args) {      // keep this function call here         Scanner s = new Scanner(System.in);    System.out.print(NumberEncoding(s.nextLine()));   }}jasvascript 函數(shù)是function NumberEncoding(str) { str = str.toLowerCase();var obj = {};var alpha = "abcdefghijklmnopqrstuvwxyz";var result = "";for (var i = 1; i <= alpha.length; i++) {    obj[alpha[i-1]] = i;}for (var j = 0; j < str.length; j++) {  if (str[j].match(/[a-z]/)) {    result += obj[str[j]];  } else {    result += str[j];   }}return result;}
查看完整描述

3 回答

?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

第一步,創(chuàng)建一個(gè)變量來累加String結(jié)果;我會(huì)用一個(gè)StringBuilder. 第二步,String一次一個(gè)字符地迭代輸入。第三步,將該字符轉(zhuǎn)換為小寫。第四步,檢查該字符是否不是數(shù)字。第五步,如果字符是數(shù)字,則將其直接傳遞,否則該值很容易確定,因?yàn)?Java 字符是整數(shù)類型(例如 'a' + 1 = 'b' 和 'b' - 1 = 'a')。第六步,將結(jié)果作為String. 最后,Java 命名約定是駝峰命名法(以小寫字母開頭)。喜歡,


public static String encodeNumber(String str) {

    StringBuilder result = new StringBuilder();

    for (int j = 0; j < str.length(); j++) {

        char c = Character.toLowerCase(str.charAt(j));

        if (c < 'a' || c > 'z') {

            result.append(c);

        } else {

            result.append(1 + c - 'a');

        }

    }

    return result.toString();

}

但是,如果您確實(shí)愿意,您確實(shí)可以使用Nashorn從 Java 直接調(diào)用 JavaScript 函數(shù)。喜歡,


String f = "function NumberEncoding(str) { str = str.toLowerCase();\n" 

        + "var obj = {};\n"

        + "var alpha = \"abcdefghijklmnopqrstuvwxyz\";\n" 

        + "var result = \"\";\n"

        + "for (var i = 1; i <= alpha.length; i++) {\n" 

        + "    obj[alpha[i-1]] = i;\n" + "}\n" + "\n"

        + "for (var j = 0; j < str.length; j++) {\n" 

        + "  if (str[j].match(/[a-z]/)) {\n"

        + "    result += obj[str[j]];\n" 

        + "  } else {\n" + "    result += str[j];" + "  }\n" + "}\n"

        + "return result;\n" + "}";

ScriptEngine se = new ScriptEngineManager().getEngineByName("js");

try {

    se.eval(f);

    Invocable invocable = (Invocable) se;

    Object result = invocable.invokeFunction("NumberEncoding", "zabc123");

    System.out.println(result);

} catch (Exception e) {

    e.printStackTrace();

}

為了同樣的結(jié)果。


查看完整回答
反對(duì) 回復(fù) 2023-12-13
?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

一種方法是使用 StringBuilder。


      List<String> strings = Arrays.asList("abc123", "e2f3g4");

      for (String s : strings) {

         StringBuilder sb = new StringBuilder(s);

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

            char c = sb.charAt(i);

            if (Character.isAlphabetic(c)) {

               sb.replace(i, i + 1, Integer.toString(c - 'a' + 1));

            }

         }

         System.out.println(sb.toString());

      }

還有 Stream 版本。


      List<String> strings = Arrays.asList("123abc", "e1f2g3", "xyz123");


      List<String> converted = strings.stream().map(str -> str.chars().map(

            chr -> Character.isAlphabetic(chr) ? chr - 'a' + 1

                  : chr - '0').mapToObj(String::valueOf).collect(

                        Collectors.joining())).collect(Collectors.toList());


      System.out.println(converted);


查看完整回答
反對(duì) 回復(fù) 2023-12-13
?
天涯盡頭無女友

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊

解決步驟可以是

  1. 用值 1 到 26填充int[]大小為 26(字母表數(shù))的值,對(duì)應(yīng)于字母表中字母的位置。

  2. 遍歷輸入字符串的所有字符并將其位置從 附加int[]到 a StringBuilder。如果該字符不是字母表,則按原樣追加。

演示:

public class Main {

    public static void main(String[] args) {

        System.out.println(numberEncoding("abc123"));// Expected: 123123

    }


    static String numberEncoding(String str) {

        str = str.toLowerCase();

        String alpha = "abcdefghijklmnopqrstuvwxyz";

        int[] obj = new int[alpha.length()];

        StringBuilder result = new StringBuilder();

        for (int i = 1; i <= obj.length; i++) {

            obj[i - 1] = i;

        }


        for (int j = 0; j < str.length(); j++) {

            if (str.charAt(j) >= 'a' && str.charAt(j) <= 'z') {

                result.append(String.valueOf(obj[j]));

            } else {

                result.append(str.charAt(j));

            }

        }

        return result.toString();

    }

}

輸出:


123123


查看完整回答
反對(duì) 回復(fù) 2023-12-13
  • 3 回答
  • 0 關(guān)注
  • 242 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)