有没有办法在String中切换一个字母?

时间:2013-01-18 14:06:12

标签: java string indexing

我需要一种方法,用另一个字母切换特定索引的字母。有什么类似的吗?

像这样:

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

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

因此,对于secretWord,它将是?e??

5 个答案:

答案 0 :(得分:3)

您可以使用正则表达式搜索并替换任何非letter的字符:

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

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

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

正则表达式的解释:

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

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

DEMO

答案 1 :(得分: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 ......试试吧

答案 2 :(得分: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);
        }

答案 3 :(得分:0)

我会稍微看一下这个任务。我们有一个秘密("test")和一种展示方式,如果提供了字母"????",结果将是"?e??"e?的序列不是字符串本身,而是按需生成。然后我们不必替换字符串中的东西(顺便说一下,我们不能做什么,因为字符串是不可变的)。这是用代码编写的想法:

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();
    }
}

答案 4 :(得分:0)

我还没有足够的回复在评论中回复,但是您可以通过添加变量来扩展h2ooooo的帖子以使其变得灵活,同时:

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

+1,h2ooooo - 整洁的回答!

西部高地白梗