php Xiaobian Yuezi は、文字列内の繰り返し部分文字列を置換し、そのうち 1 つだけを置換します。これはよくある問題です。文字列処理では、文字列内の繰り返し部分文字列を置換する必要がある場合がありますが、繰り返し部分文字列をすべて置換するのではなく、そのうちの 1 つだけを置換したいと考えます。これにより、必要な置換効果を実現しながら、他の同一の部分文字列を保持できます。 PHP では、いくつかの組み込み関数と正規表現を利用してこの要件を達成できます。以下では、文字列内の繰り返し部分文字列のうち 1 つだけを置換する方法の実装方法を詳しく紹介します。
goを使って簡単な死刑執行人ゲームを作っているのですが、エラーが発生しました。unknown_stringという文字列(コード内に表示されます)に_文字が含まれているので、その文字を推測してください。他のプレイヤーは単語の長さを確認でき、プレイヤーが正しい文字を入力するたびに、n 番目 (n は単語内で文字が見つかるインデックスに依存します) _ 文字をその文字に置き換えたいと考えています。成功しましたが、一つ疑問があります。単語に 2 つの文字が繰り返されている場合、そのうちの 1 つだけが置き換えられます。
すべてのインデックスを反復処理するために、iterate という別の関数を作成しました (この関数は、ネストされたコードを避けたかったために作成されました)。しかし、それは機能しません、コードは次のとおりです:
package main import ( "fmt" "strings" ) var input string var word string var unknown_word []string var unknown_word_string string var index int var guesses int var change_unknown_word_string []byte func main() { fmt.Println("Welcome to hangman") fmt.Println("Player 1, choose a word!") fmt.Scan(&word) for i := 1; i <= len(word); i++ { unknown_word = append(unknown_word, "_") } unknown_word_string = strings.Join(unknown_word, "") for { fmt.Println("Player 2, guess a letter or a word") fmt.Println(unknown_word_string) fmt.Scan(&input) if guesses == 6 { fmt.Println("Player 2 lost! Player 1's word was: ", word) break } else if unknown_word_string == input { fmt.Println("Player 1 lost! Player 2 guessed the word by guessing the letter!") } if strings.Contains(word, input) && word != input { index = strings.Index(word, input) iterate() fmt.Println("You guessed a letter!") } else if word == input { fmt.Println("Player 1 lost! Player 2 guessed the word by guessing the whole word!") break } else { fmt.Println("Nothing found") guesses++ } } } func iterate() { change_unknown_word_string = []byte(unknown_word_string) for i := 0; i < len(change_unknown_word_string); i++ { if change_unknown_word_string[i] == change_unknown_word_string[index] { change_unknown_word_string[i] = []byte(input)[0] } } unknown_word_string = string(change_unknown_word_string) }
比較ifchange_unknown_word_string[i] ==change_unknown_word_string[index]
は明らかに unknown_word_string
が含まれているため意味がありません。これらの位置は #__ です。
word[i] == input[0] を比較する必要があります。
string から
byte 配列への変換は Unicode をサポートしていないことに注意してください。 latin1 文字に制限されないよう、
rune (Unicode コード ポイント) を使用することをお勧めします。
リーリー
リーリー
これはifunknown_word_string == word であり、
iterate() の呼び出しの後に来る必要があります。
以上が文字列内で繰り返される部分文字列のうち 1 つだけを置換して置換します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。