Jag sitter och leker lite med en javachatt.. inte gjort grunden, men vill göra min egna lilla version. Ska försöka göra som i mirc att om du skriver /nick Olof så byter den nick till Olof så då varje text som skickas sparas i en string. Sen jämför den string och kollar mot en annan variabel som har /nick inmatat i sig. Men vill skilja lite så att if-satsen bara jämför vad som står innan mellanslaget.. exempel
Skriver man såhär: /nick OLOF så ska if-satsen gå in och plocka ut olof samt känna igen att man skrivit /nick.
Såhär ser min ifsats ut:
if(SendText.trim().equals(kommando.trim()))
SendText är en string med texten som ska skickas
kommando är en string med "/nick" som värde. Men skriver man /nick OLOF så är ifsatsen false :/
ViktorMedlem sedan aug. 20021 752 inlägg Såhär gjorde jag in min chat för något år sedan,
StringTokenizer st=new StringTokenizer(txtField.getText()," ");
String command=st.nextToken().toLowerCase();
if(command.equals("/join"))
{
String name=st.nextToken();
cd.setCommand(ClientData.JOIN_CHANNEL);
cmc.encodeMessage(cd,name.trim());
}
else if(command.equals("cls"))
{
textArea.setText("");
}
else if(command.equals("/whois"))
{
cd.setCommand(ClientData.WHOIS);
cmc.encodeMessage(cd,st.nextToken());
}
Jag använder altså en StringTokenizer för att dela på strängen vid varje mellanslag och får då de komponenter som jag vill ha.
För att få koden som du har skrivit att fungera är att göra såhär,
if(SendText.trim().startsWith(kommando.trim()))
Dvs kolla om strängen börja med det som finns i kommando.
/Viktor
spangoMedlem sedan juni 20008 205 inlägg En variant är också att använda regexpar:
static final joinPattern = Pattern.compile("^/join +(\\S+)$");
...
Matcher m;
String cmd = // läs in en sträng från användaren, typ med readLine eller nåt
if ((m = joinPattern.matcher(cmd)).matches()){
String newNick = m.group(0);
// newNick innehåller nu det nya smeknamnet
}
Ev. kan du bli tvungen att byta ut \\S mot nåt annat, det beror på vilka tecken du tillåter i användarnas nick. Om så är fallet rekommenderar jag att du läser på lite om regexpar:
http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/package-summary.html