webForumDet fria alternativet

Jämföra strings och skriva till dem

Java

3 svar · 299 visningar · startad av Karamell

Medlem sedan juni 200199 inlägg
Frågan#1

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 :/

Medlem sedan aug. 20021 752 inlägg
#2

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

Medlem sedan juni 20008 205 inlägg
#3

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

Medlem sedan juni 200199 inlägg
#4

funkade fint tackar!

271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)