0

我需要一种将特定索引中的字母与另一个字母切换的方法。有类似的吗?

像这样:

String word = "test";
String letter = "e";
String secretWord = "????";

查找字母 e 的索引,然后查找 e 是否在 word 中。然后切换一个“?” 基于测试中的 e 的索引。

所以它?e??适用于secretWord。

4

5 回答 5

3

您可以使用正则表达式来搜索和替换 ISN'T 的任何字符letter

String word = "test";
String secretWord = word.replaceAll("(?i)[^e]", "?");

您还可以添加更多您不想替换到正则表达式的字母(这将替换每个非元音):

String secretWord = word.replaceAll("(?i)[^aeiouy]", "?");

正则表达式的解释:

  • (?i)意思是“不区分大小写”。
  • ^意思是“不”。
  • aeiouy是我们不想匹配的字符

这是正则表达式替换的演示(仅使用e):

演示

于 2013-01-18T14:13:31.787 回答
2
        string word = "test";
        char letter = 'e';
        string secretWord = "????";
        int index = word.indexOf(letter);
        if(index >= 0)
        {
         secretWord = secretWord.substring(0,index)+letter+secretWord.substring(index + 1);
         System.out.println(secretWord);
        }

此代码适用于 JAVA ...... 试试看

于 2013-01-18T14:29:03.990 回答
0

如果您使用的是 C#,那么请尝试下面的编码。它会对您有所帮助

     //Declare
        string word = "test";
        char letter = 'e';
        string secretWord = "????";
        if (word.IndexOf("e") != -1)//Find the Char is found or NOT
        {
            int index = word.IndexOf(letter); //Index of the Char
            Console.WriteLine("Index of the Word E :" + word.IndexOf("e").ToString());
            StringBuilder sb = new StringBuilder(secretWord);
            sb[index] = letter; // Replacing the Char
            secretWord = sb.ToString();
            Console.WriteLine(secretWord);
        }
于 2013-01-18T14:20:51.883 回答
0

我会以不同的方式看待这项任务。我们有一个秘密 ( "test") 和一种显示它的方式,结果将是"????"或者"?e??"如果提供了这封信e。的序列?本身不是字符串,而是按需生成。然后我们不必替换 String 中的某些内容(顺便说一句,我们不能这样做,因为字符串是不可变的)。这是用代码编写的想法:

public class SecretWord {

    private String secret;

    public SecretWord(String secret) {
        this.secret = secret;
    }

    public String display(char c) {
        if (secret == null) {
            return "";
        }
        StringBuilder displayBuilder = new StringBuilder();
        for (char secretChar : secret.toCharArray()) {
            displayBuilder.append(secretChar == c ? c : '?');
        }
        return displayBuilder.toString();
    }
}
于 2013-01-18T14:36:28.177 回答
0

我还没有足够的代表在评论中回复,但您可以通过添加一个变量来扩展 h2ooooo 的帖子以使其灵活,也:

String letter = "e";
String secretWord = word.replaceAll("(?i)[^" + letter + "]", "?");

+1,h2ooooo - 整洁的答案!

韦斯蒂

于 2013-01-18T15:33:54.040 回答