2013-01-18 31 views
0

我需要一种将特定索引中的字母与另一个字母切换的方法。有什么喜欢的吗?有没有方法来切换字符串中的一个字母?

像这样:

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

找到字母e的索引,然后发现如果e字。然后切换一个“?”基于测试中e的索引。

因此,它将为secretWord ?e??

回答

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 ......试试吧

3

你可以使用正则表达式搜索和替换,是不是letter任何字符:

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

你也可以添加你不想替换成正则表达式(这将替换每个非以上字母-vowel):

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

正则表达式的说明:

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

这里的正则表达式替换(只是e)的演示:

DEMO

+0

很抱歉的混乱,我使用Java – user1972601

+0

@ user1972601代码现在应该是在Java中,和现在的工作。 – h2ooooooo

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

我没有足够的代表在评论尚未回复,但你可以通过在变量上添加h2ooooo的帖子扩大,使之灵活,也:

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

+1,h2ooooo - tidy答案!

西部高地白梗

相关问题