Wanneer een stuk tekst onderbroken wordt.

Status
Niet open voor verdere reacties.

bjornbos

Gebruiker
Lid geworden
1 feb 2009
Berichten
446
Hallo allemaal,

Ik wil wanneer een tekst onderbroken word doormiddel van een spatie, daar een foutmelding van komt.

Dus:

Code:
if(textfield1.getText().contains(" "))
{
Foutmelding
}
else
{
Geen foutmelding
}

Deze code hierboven voldoet alleen niet, want wanneer vooraan of achteraan de tekst een spatie staat, moet het niet uitmaken.

Dus:

Code:
if(textfield1.getText().contains(" "))
{
  if(textfield1.getText().startswith(" ")
  || textfield1.getText().endswith(" "))
  {
  Geen foutmelding
  }
  else
  {
  foutmelding
  }
}
else
{
Geen foutmelding
}

Deze code hierboven voldoet óók niet, want wanneer er dan: én voor en/of achteraan én in het midden een spatie zit, dan geeft hij geen foutmelding. Dat moet hij wel doen, omdat er in het midden een open gat zit.


Kortom:

De tekst mag dus niet onderbroken worden. Hoe doe ik dit?


Met vriendelijke groeten,

Björn Bos
 
Laatst bewerkt:
Een manier hoe je dit zou kunnen oplossen is met een paar booleans. Deze zet je true / false indien er zich een spatie optreed.

Indien je dit mooi op wilt lossen kan je ook kijken naar regex. Dan controleer je een string op een patroon. Voldoet het daar niet aan dan kan je dat opvangen. Dit is iets complexer, maar indien je daarvan gediend bent kan ik dat voor je uitwerken / vragen beantwoorden. Kijk daarvoor even op de volgende link:
http://download.oracle.com/javase/tutorial/essential/regex/


Hier een stukje voorbeeld code van de makkelijkere manier:
Code:
package spatie;

public class SpatieString {
	
	public static void main(String args[]) {
		
		String de_grote_string = "  ABCD DEFSDFS  ";
		
		boolean characters = false;
		boolean eindecheck = false;
		for(int i = 0; i <= de_grote_string.length()-1; i++) {
			char c = de_grote_string.charAt(i);
			if((c != ' ') && !characters) {
				characters = true; //nu beginnen we te kijken.
			}
			if(characters && (c == ' ')) {
				eindecheck = true;
			}
			if(eindecheck && (c != ' ')) {
				System.out.println("Er zit een spatie in het midden.");
				break;
			}
		}
		
		
	}

}
 
Bedankt voor je reactie,

Alleen hoe moet ik dit hier in plaatsen:

Code:
public void button2_ActionPerformed(ActionEvent evt) {
    // TODO add your code here
  }

Wanneer ik dat van jou wil laten uitvoeren als er op button2 word geklikt?

Met vriendelijke groeten,

Björn Bos
 
Dan zul je een methode aanroep moeten doen.

Dit is wel zeer basis java. Ik ben nu ook even aan het twijfelen of je dit wel echt snapt of het liever gewoon over neemt. Ik geef code uit zodat je er wat van kan leren en niet klakkeloos over neemt :) (Als ik fout zit, mijn excuses)

Indien je het gewoon even niet ziet (wat iedereen wel eens overkomt):
Code:
public void actionPerformed(ActionEvent evt) {
     if(evt.getSource() == button2) {
             controleerDezeZinOpSpaties(textfield.getText());
     }
}

public void controleerDezeZinOpSpaties(String controleString) {
        boolean beginVanCharacters = false;
	boolean eindecheck = false;
	for(int i = 0; i <= controleString.length()-1; i++) {
		char c = controleString.charAt(i);
		if((c != ' ') && !beginVanCharacters) {
			beginVanCharacters = true; //nu beginnen we te kijken.
		}
		if(beginVanCharacters && (c == ' ')) {
			eindecheck = true;
		}
		if(eindecheck && (c != ' ')) {
			System.out.println("Er zit een spatie in het midden.");
			break; //zorgt ervoor dat het programma uit de loop gaat en niet de verdere characters nog bekijkt.
		}
	}
}

Als je het afhandelen van de uitkomt in het programma wilt gebruiken (ipv laten zien) kan je de methode natuurlijk boolean of String maken, dit naar eigen keuze:)

met vriendelijke groet,
NewbiProgr
 
Laatst bewerkt:
Een verkorte vorm zou zijn:
Code:
textfield1.getText().trim().contains(" ")
 
Dan zul je een methode aanroep moeten doen.

Dit is wel zeer basis java. Ik ben nu ook even aan het twijfelen of je dit wel echt snapt of het liever gewoon over neemt. Ik geef code uit zodat je er wat van kan leren en niet klakkeloos over neemt :) (Als ik fout zit, mijn excuses)

Indien je het gewoon even niet ziet (wat iedereen wel eens overkomt):
Code:
public void actionPerformed(ActionEvent evt) {
     if(evt.getSource() == button2) {
             controleerDezeZinOpSpaties(textfield.getText());
     }
}

public void controleerDezeZinOpSpaties(String controleString) {
        boolean beginVanCharacters = false;
	boolean eindecheck = false;
	for(int i = 0; i <= controleString.length()-1; i++) {
		char c = controleString.charAt(i);
		if((c != ' ') && !beginVanCharacters) {
			beginVanCharacters = true; //nu beginnen we te kijken.
		}
		if(beginVanCharacters && (c == ' ')) {
			eindecheck = true;
		}
		if(eindecheck && (c != ' ')) {
			System.out.println("Er zit een spatie in het midden.");
			break; //zorgt ervoor dat het programma uit de loop gaat en niet de verdere characters nog bekijkt.
		}
	}
}

Als je het afhandelen van de uitkomt in het programma wilt gebruiken (ipv laten zien) kan je de methode natuurlijk boolean of String maken, dit naar eigen keuze:)

met vriendelijke groet,
NewbiProgr

Als ik heel eerlijk ben, nee ik snap het niet, ik wil het inderdaad gewoon even overnemen. Ik sla hem dan op, als ik het ooit nog eens nodig heb, dan zoek ik hem weer op.

En leren van iets doe ik pas wanneer hij werkt, want wanneer ik dat niet zeker weet wil ik het niet leren, omdat ik dan misschien iets leer wat niet eens werkt bij mijn code. Ik wil dus zeker weten dat ik hetgeen leer wat ook met mijn code te maken heeft.

Ik ga dit even proberen, dankjewel!

Björn Bos
 
Als ik heel eerlijk ben, nee ik snap het niet, ik wil het inderdaad gewoon even overnemen. Ik sla hem dan op, als ik het ooit nog eens nodig heb, dan zoek ik hem weer op.

Dit duidt een beetje op sarcasme, maar indien ik je heb beledigd mijn excuses. Ik bedoelde er alleen mee dat je echt bij de basis moet beginnen en van daaruit moet verder werken. Functie aanroepen zijn een stuk "basisachtiger" dan handlers, indien je bij de simpele dingen begint kom je veel verder in het programmeren :)
 
Dit duidt een beetje op sarcasme

Indien dit slaat op mijn reactie, ik meende het echt, ik snap jouw stukje code ook niet, maar hier verdiep ik me pas in als het in mijn stuk werkt en doet wat ik verwacht. Want als dat niet zo is en ik leer het, dan heb ik daar niets aan. Als het werkt, dan is het iets wat ik vaker ga gebruiken en dus de moeite om te leren.

Dus ik kom nogal dom over, als ik alles helemaal uitgewerkt wil hebben, maar dat is dus om die reden.

En ik ben heel blij dat je het uitgewerkt hebt, want ik heb hem nu werkend en ik snap zo ongeveer wat de componenten doen, alleen moet ik het nog even juist plaatsen in mijn script. Aangezien ik nogal een if en else fan ben, heb ik in totaal 14 mogelijkheden waarbij het programma "verder" kan, dus ik ben er nog even mee bezig.

Ik laat het je weten wanneer ik vragen heb of als het gelukt is, voor nu in iedergeval heel erg bedankt!

Groetjes,

Björn Bos
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan