2017-03-23 10 views
-1

Ich bin ein Anfänger Programmierer. Mein Code, der in Ruby ist, scannt grundsätzlich einen Text und findet heraus, wie oft ein bestimmtes Wort erscheint oder Wörter im Text ersetzt. Das erste, was ich nicht tun kann, ist, den Codeblock zu wiederholen. Wenn jemand will, ihren Text erneut zu scannen oder ersetzen müssen sie das Programm anstelle des Programms neu starten geht, habe ich versucht, dieses Problem zu lösen, indem Sie den gesamten Code-Block zu nehmen und Looping es, aber es hat nicht funktioniert und hat einen Fehler zurückgegeben . Die andere Sache ist, dass, wenn ich die Replace-Funktion verwende, es nur ein Wort ersetzt, im Gegensatz zu beiden. Zum Beispiel zeigt es Nahrung meme anstelle von Lebensmitteln Lebensmittel in das Bild unten: Wie kann ich diesen Codeblock wiederholen?

puts "insert your text: " 
string = gets.chomp 

puts "would you like to scan or replace your text?" 
choice = gets.chomp 

#this is the scan option which scans the text and outputs the amount of times a word is in it 

if choice.include? "scan" 

    puts "what word would you like to scan?" 
    word_for_scan = gets.chomp 
     scan_count = string.scan(word_for_scan).count 
     puts "The word #{word_for_scan} appears #{scan_count} times" 

#this is the replace function in the code which replaces the words in the text, as shown in the image above, whenever I try to replace something it only replaces one word instead of all of them 

elsif choice.include? "replace" 

    puts "what word would you like to replace?" 
    word_for_replacement = gets.chomp 
     puts "what word would you like to replace it with?" 
     replacement_word = gets.chomp 
     replaced_text = string.sub(word_for_replacement, replacement_word) 
     puts "here is your new text: #{replaced_text}" 

else 
    puts "error: would you like to scan or replace text?" 

end 

Vielen Dank für Blick auf den Code und versuchen, das Problem zu lösen.

+0

Was bedeutet "es hat nicht funktioniert und gab einen Fehler zurück" bedeuten? * Wie genau * "hat es nicht funktioniert"? Was war die * genaue * Fehlermeldung? Bitte geben Sie eine [mcve] ein und probieren Sie Inputs und Outputs für Ihre gewünschten Ergebnisse aus, einschließlich aller Spezialfälle und Eckfälle. –

Antwort

2

1)Antwort 1 rekursive Ausführung auf Frage:

Gerade den Code in ein bewegen method/function und Rufen Sie die same function in ihm an.

Dies ist das Konzept recursive function genannt und erfüllt Ihre Anforderung.

def changeText 

    puts "insert your text: " 
    string = gets.chomp 

    puts "would you like to scan or replace your text?" 
    choice = gets.chomp 

    #this is the scan option which scans the text and outputs the amount of times a word is in it 

    if choice.include? "scan" 

    puts "what word would you like to scan?" 
    word_for_scan = gets.chomp 
     scan_count = string.scan(word_for_scan).count 
     puts "The word #{word_for_scan} appears #{scan_count} times" 

    #this is the replace function in the code which replaces the words in the text, as shown in the image above, whenever I try to replace something it only replaces one word instead of all of them 

    elsif choice.include? "replace" 

    puts "what word would you like to replace?" 
    word_for_replacement = gets.chomp 
     puts "what word would you like to replace it with?" 
     replacement_word = gets.chomp 
      replaced_text = string.sub(word_for_replacement, replacement_word) 
      puts "here is your new text: #{replaced_text}" 

    else 
    puts "error: would you like to scan or replace text?" 

    end 
    changeText(); 
end 

changeText(); 

2)Antwort 2 Verwendung auf Frage gsub statt sub:

gsub alle Instanzen ersetzt, während sub eine einzelne Instanz ersetzt.

string.gsub(word_for_replacement, replacement_word)

+0

@Sarim Aleem, überprüfen Sie bitte meine Antwort. – Sravan

+0

Danke, das war sehr hilfreich. –

1

Einfach eine while-Schleife um den Code.

while true do 
    puts "hello" 
end 

bei gedrückter Ctrl-C wird die Schleife verlassen oder Sie können vom Benutzer mit der Eingabe etwas mehr Phantasie tun.

Sie können alle Instanzen in der Zeichenfolge ersetzen durch gsub anstelle von sub

1

Wie Ihr Programm läuft immer und immer wieder
Wenn Sie mit while Schleifen oder definieren Funktionen nicht vertraut sind, machen, dann bitte alles darüber gehen Sie vor und lesen. Ich möchte nicht den Spaß daran verderben zu entdecken, welche Magie es für Ihre Programme tun kann. Wenn Sie jedoch Ihr Programm sofort verwenden müssen, ohne ins Detail zu gehen, schauen Sie sich die anderen Antworten an, Sie werden den richtigen Code finden!

Wie alle Wörter ersetzen
Sie wollen gsub Methode zu verwenden, statt sub, wenn alle Instanzen eines bestimmten Wortes ersetzt:

replaced_text = string.gsub(word_for_replacement, replacement_word) 

sub Ersatz ein Vorkommen eines Wortes, während gsub für ist globale Ersetzung (alle Vorkommen).

+0

Sicher, ich werde sie überprüfen, danke !! –

Verwandte Themen