Toon posts:

[java] input afhankelijk van output

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wanneer ik mijn java applicatie run communiceert hij met een library
gemaakt in C. In deze applicatie wordt er met behulp van een callback functie (JNI)
vanuit de library gevraagd om een java methode die een message box laat zien.

De tekst die op deze message box staat is gekoppeld met een .txt file met behulp
van inputstreams. Nou wil ik de inhoud van de tekst die in deze message box komt te staan afhankelijk maken van een code. voorbeeld.

100 hello
101 bye bye
102 Goodmorning

Ik wil dus met behulp van de code 100 "hello" laten zien in mijn messagebox.
Deze code die ik hierboven heb weergegeven moeten allemaal in 1 tekst bestand staan (input.txt). Dus de input moet afhankelijk worden van mijn vraag (output).

Nu lees ik gewoon de gehele tekst bestand uit, en print dit op mijn messagebox.
Ik wil dus alleen het gedeelte wat achter 100 staat op mijn messagebox hebben wanneer ik input vraag met de code 100.

Is het een beetje te begrijpen?
Ik heb dit wel zien werken in C.

Heeft iemand een tip voor me?

Gr

  • Dash2in1
  • Registratie: November 2001
  • Laatst online: 24-05 20:08
Kijk eens naar de StringTokenizer

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 26-05 00:01

Janoz

Moderator Devschuur®

!litemod

Lees het txt bestand in en zet het om naar een hash

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • GambitRS
  • Registratie: Juni 2001
  • Laatst online: 13-06-2013

GambitRS

w00t

zie http://java.sun.com/j2se/...api/java/lang/String.html er zijn meerdere manieren om het eerste deel eraf te halen. Bijvoorbeeld getChars of zelfs een replaceFirst, zo zijn er nog meer manieren natuurlijk.

MechWarrior || Monsters Game


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 27-05 10:14

Eelke Spaak

- Vlad -

Met java.util.Properties kan je heel simpel zo'n associatieve lijst lezen uit een bestand.

Je moet wel het formaat '100=hallo' gebruiken i.p.v. met een spatie. Het precieze formaat dat je bestand moet hebben staat uitgelegd in de API-link die ik je gaf.

Java:
1
2
3
4
5
Properties messages = new Properties();
FileInputStream fin = new FileInputStream("messages.txt");
messages.load(fin);

String msg = messages.getProperty("100"); // Levert nu "hallo" op.

TheStreme - Share anything with anyone


Verwijderd

Topicstarter
Tnx!!
Het werkt. Gewoon zoals je het zei. ;)

Verwijderd

Topicstarter
Hallo,

Ik haal nu een bepaalde message uit een externe textfile met behulp van een message_id. Bijvoorbeeld, in mij txtfile staat achter message_id 1 Hello.

1 : Hello

In Java haal ik deze message op met de volgende code

In java
Java:
1
String labelMsg = input.getProperty("1");


Nu wil ik graag (als dat kan) een dynamische variabele in de textfile zetten, zodat deze ook werkt. Dus:

1 : Hello "+name+"

In mijn java code geef ik de variabele name een waarde.

Java:
1
String name = "Somebody";


Alleen als ik dat op deze manier doe. Krijg ik in mijn output gewoon de gehele String Hello "+name+" te zien. Maar ik wil graag Hello Somebody zien.

Weet iemand hoe ik dus in de input.getProperty een dynamische variabele kan zetten??

Alvast Bedankt.

  • Bobco
  • Registratie: Januari 2001
  • Laatst online: 30-10-2023

Bobco

I used to dream about Verona.

Verwijderd schreef op 29 januari 2004 @ 14:38:
Weet iemand hoe ik dus in de input.getProperty een dynamische variabele kan zetten??
In principe kan dat niet. Een Properties object kan alleen omgaan met platte strings. Wat je wel zou kunnen doen is een placeholder gebruiken en die vervangen door de waarde die je hebt.

Java:
1
2
3
4
5
6
7
// property definitie
1 = Hallo variabele

// Java Code

String message = propertyObj.getProperty("1");
message.replaceAll("variabele", "echte naam");


De replaceAll() is trouwens nieuw in Java2 1.4, dus dat zal niet werken op oudere versies. Als je iets dergelijks vaker wilt doen kun je ook overwegen om een template engine als Velocity te gaan gebruiken, maar dat iswaarwschijnlijk te zwar geschut in deze situatie.

With the light in our eyes, it's hard to see.


Verwijderd

Topicstarter
Echt bedankt, dit werkt wel. Mits je wel een JDK2 hebt ja.
Pagina: 1