(JAVA) Suche eines Strings...

mockauer

Mitglied
Hi ich habe folgenden Code:

Code:
			BufferedWriter schreibe = null;
			schreibe = new BufferedWriter(new FileWriter("TestCase.html", true));

			//String successful = "The test case is successful";
			String notsuccessful= "The test case was not successful";
	        int anzahl = 0;
	        if (0 != testCase_message.length()) {
	            for (int index = testCase_message.indexOf(testCase_message, 0); index != -1; index = notsuccessful
	                    .indexOf(notsuccessful, index + 1)) {
	                anzahl++;
	            }
	        }
	        schreibe.write("Nicht erfolgreiche Testfälle: " + anzahl + " TEST");

			for (TestCase testCase : testCaseList) {
				System.out.println(testCase);
				
			
				
				String testCase_id=testCase.getId();
				String testCase_title=testCase.getTitle();
				String testCase_url=testCase.getUrl();
				String testCase_type=testCase.getType();
				String testCase_message=testCase.getResultMessage();

					
				
			

		
				
				
				schreibe.write("<h2>");
				for (int i=0; i<testCase_id.length(); i++){
					
					schreibe.write((byte)testCase_id.charAt(i));

					
					

				}
				schreibe.write("</h2>");
				schreibe.newLine();
				schreibe.write("Titel: ");
				for (int i=0; i<testCase_title.length(); i++){
	
					schreibe.write((byte)testCase_title.charAt(i));

				}
				schreibe.write("<br/><br/>");
				schreibe.newLine();
				schreibe.write("URL: ");
				for (int i=0; i<testCase_url.length(); i++){
					schreibe.write((byte)testCase_url.charAt(i));

				}
				schreibe.write("<br/><br/>");
				schreibe.newLine();
				schreibe.write("Type: ");
				for (int i=0; i<testCase_type.length(); i++){
					schreibe.write((byte)testCase_type.charAt(i));

				}
				schreibe.write("<br/><br/>");
				schreibe.newLine();
				schreibe.write("Message: ");
				for (int i=0; i<testCase_message.length(); i++){
					schreibe.write((byte)testCase_message.charAt(i));

				}
				schreibe.write("<br/><br/>");
				schreibe.newLine();
				
				

			}
			
			
			
			
			schreibe.close();
			System.out.println("Datei erstellt.");

So ich möchte gerne successful und notsuccesful in dem testCase_message herausliest wie oft es das gibt.
Ich will s aber nur einmal vor der for schleife machen, sodass ich eine genaue Anzahl vorher habe. So setze ich das alles vor die for schleife erkennt der die Variable testCase.getMessage(); nicht mehr, habe eingeis schon versucht, aber nie kam es zum erfolg. Brauche bitte Hilfe.
 
Okay.

Ich will das der String "testCase_message" nach den String "successful" durchsucht wird und am Ende soll es anzeigen wie oft dieser String vorhanden ist.

Wie mache ch das am besten?!
 
Ok, damit kann ich was anfangen. :)

Also ich hätte folgenden Vorschlag zu machen, wie du es lösen könntest.

Code:
	/**
	 * @param string
	 * @param searched
	 * @return
	 */
	public int countWord(String string, String searched, boolean caseSensitive) {
		if(!caseSensitive) {
			string = string.toLowerCase();
			searched = searched.toLowerCase();
		}
		
		int startIndex = 0;
		int wordIndex = 0;
		
		int count = 0;
		while((wordIndex = string.indexOf(searched, startIndex)) != -1) {
			startIndex = wordIndex + searched.length();
			count++;
		}
		return count;
	}
 
Okay jap manchmal überlege ich nicht so beim Schreiben^^...

Und das kann ich dann nutzen vor der "for" Schleife und dann müsste es gehen?!
 
Diese Methode zählt die Anzahl der Wörter/Zeichenketten (Parameter: searched), die in dem übergebenen String (Parameter: string) enthalten sind und gibt anschließend die Anzahl (count) zurück.

Daher würde ich es meiner Meinung nach durch diesen Teil von deinem Code ersetzen:
Code:
int anzahl = 0;
            if (0 != testCase_message.length()) {
                for (int index = testCase_message.indexOf(testCase_message, 0); index != -1; index = notsuccessful
                        .indexOf(notsuccessful, index + 1)) {
                    anzahl++;
                }
            }
 
Also das einzigste Problem, das ich sehen kann, dass es mit sich bringen würde wäre, dass du die Methode von mir static machen musst.
 
Eclipse zeigt wenn ich das ersetze von mir an:

public int countWord(xx ,...) //die anderen kommata auch rot
...
return count;

Das sind die Fehlermeldungen von Eclipse, wenn ich die Vroschläge von Eclipse nachgehe ist das "public" weg. Bei den Kommas in den (..) erwaretet man ";" und keine ","...und bei return mächte er die main anstatt void zu int mchen...
 
Du machst es also genau so?

Code:
public static void main(String[] args) {
		// .......
		
		BufferedWriter schreibe = null;
        schreibe = new BufferedWriter(new FileWriter("TestCase.html", true));

        //String successful = "The test case is successful";
        String notsuccessful= "The test case was not successful";
        int anzahl = 0;
        if (0 != testCase_message.length()) {
        	countWord(testCase_message, "is successful", true);
        }
        schreibe.write("Nicht erfolgreiche Testfälle: " + anzahl + " TEST");

        for (TestCase testCase : testCaseList) {
            System.out.println(testCase);
            
            String testCase_id=testCase.getId();
            String testCase_title=testCase.getTitle();
            String testCase_url=testCase.getUrl();
            String testCase_type=testCase.getType();
            String testCase_message=testCase.getResultMessage();

            schreibe.write("<h2>");
            for (int i=0; i<testCase_id.length(); i++){
                schreibe.write((byte)testCase_id.charAt(i));
            }
            schreibe.write("</h2>");
            schreibe.newLine();
            schreibe.write("Titel: ");
            for (int i=0; i<testCase_title.length(); i++){

                schreibe.write((byte)testCase_title.charAt(i));

            }
            schreibe.write("<br/><br/>");
            schreibe.newLine();
            schreibe.write("URL: ");
            for (int i=0; i<testCase_url.length(); i++){
                schreibe.write((byte)testCase_url.charAt(i));

            }
            schreibe.write("<br/><br/>");
            schreibe.newLine();
            schreibe.write("Type: ");
            for (int i=0; i<testCase_type.length(); i++){
                schreibe.write((byte)testCase_type.charAt(i));

            }
            schreibe.write("<br/><br/>");
            schreibe.newLine();
            schreibe.write("Message: ");
            for (int i=0; i<testCase_message.length(); i++){
                schreibe.write((byte)testCase_message.charAt(i));

            }
            schreibe.write("<br/><br/>");
            schreibe.newLine();
        }

        schreibe.close();
        System.out.println("Datei erstellt.");
        
		// .......
	}
	
	/**
	 * @param string
	 * @param searched
	 * @return
	 */
	public static int countWord(String string, String searched, boolean caseSensitive) {
		if(!caseSensitive) {
			string = string.toLowerCase();
			searched = searched.toLowerCase();
		}
		
		int startIndex = 0;
		int wordIndex = 0;
		
		int count = 0;
		while((wordIndex = string.indexOf(searched, startIndex)) != -1) {
			startIndex = wordIndex + searched.length();
			count++;
		}
		return count;
	}
 
Zurück