特定のインデックスの文字を別の文字に切り替える方法が必要です。そのようなものはありますか?
そのようです:
String word = "test";
String letter = "e";
String secretWord = "????";
文字 e のインデックスを見つけて、e が単語内にあるかどうかを調べます。次に、「?」を切り替えます。テスト中の e のインデックスに基づいています。
したがって?e??
、secretWord の場合です。
正規表現を使用して、 ISN'T でない文字を検索して置き換えることができますletter
。
String word = "test";
String secretWord = word.replaceAll("(?i)[^e]", "?");
置き換えたくない文字を正規表現に追加することもできます (これにより、すべての非母音が置き換えられます)。
String secretWord = word.replaceAll("(?i)[^aeiouy]", "?");
正規表現の説明:
(?i)
「大文字と小文字を区別しない」を意味します。^
「ない」を意味します。aeiouy
一致させたくない文字です正規表現の置き換えのデモは次のとおりです( のみe
):
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用です......試してみてください
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);
}
私はその仕事を少し違った見方をします。秘密 ( ) とそれを表示する方法があります。文字が提供された場合"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();
}
}
まだコメントで返信するのに十分な担当者がいませんが、変数を追加して柔軟にすることで、h2ooooo の投稿を拡張することもできます。
String letter = "e";
String secretWord = word.replaceAll("(?i)[^" + letter + "]", "?");
+1、h2ooooo - きちんとした答え!
ウェスティ