Předmět Autor Datum
Mělo by to spravit tohle AFAIK: string.ReplaceAll("&", "") Moc složité to teda nebylo, regulární v…
touchwood 27.08.2006 20:36
touchwood
aha. ty chceš nahrazovat text mezi ampersandy.. pak je to "&.+&" místo "&"
touchwood 27.08.2006 20:38
touchwood
ee tak to taky nejde. Imho je lepší napsat vlastni funkci, pac ja to tu zkousim a nemam sajn. nejpod…
AZOR 27.08.2006 21:11
AZOR
Díkec, funguje to :-p
absolutčávo 27.08.2006 21:14
absolutčávo
nemělo to fungovat
AZOR 27.08.2006 21:28
AZOR
8-) ale tohle mi funguje: String marta="Mar&harčžčřegerf&ta Jandova je &ne&buh".replaceAll("&[\\u0…
AZOR 27.08.2006 21:28
AZOR
A čo toto: &.*?&:?:
los 27.08.2006 22:02
los
jj to mi jde taky.
AZOR 28.08.2006 15:55
AZOR
funguje ale je když to tam máš jednou, tedy jednu tu řadu s těma divnejma znakama
AZOR 27.08.2006 21:30
AZOR
hm.. to je divné. Mělo by to fungovat vícenásobně, pokud je implementace RegExpu správná. RegExp by…
touchwood 27.08.2006 22:04
touchwood
nevim ale "&.+&" mi nefungovalo, alespon né tak jak jsem pochopil, že to chce tazatel, ostatně mužeš…
AZOR 28.08.2006 15:56
AZOR
#!/bin/bash echo `sed -r -e 's/&.+&//g' text.txt` funguje jak má. Snažil jsem se "napasovat" sed-e…
touchwood 28.08.2006 16:13
touchwood
haf, no mě to furt nejde : vyrazy.rar (je to dost pomalé, komp toho má dnes plné zuby)
AZOR 28.08.2006 16:33
AZOR
Mne to fungovalo napriek tomu som sa rozhodol pre vlastné riešenie: private String clean(String S)…
absolutčávo 28.08.2006 16:25
absolutčávo
Java síce nie je moja šálka kávy, ale ak by som nemohol použiť regulárne výrazy, nerobil by som to p…
los 28.08.2006 20:53
los
Predpokladám že metóda indexOf je tiež implementovaná tak, že v cykle prechádza všetky znaky po jedn… poslední
absolutčávo 28.08.2006 22:01
absolutčávo
A co tak pouzit tridu StringTokenizer?
MaSo 27.08.2006 20:41
MaSo

Mělo by to spravit tohle AFAIK:

string.ReplaceAll("&", "")

Moc složité to teda nebylo, regulární výraz je supertriviální - ampersand není metaznak, a tudíž se dá normálně nahradit. Javu neumím, ale stačilo mi optat se foogla na syntax...

BTW, Foogla znáš? :-D

hm.. to je divné. Mělo by to fungovat vícenásobně, pokud je implementace RegExpu správná. RegExp by měl procházet celý text a nahrazovat všechny (i vícenásobné) stringy - alespoň dle definice.

i Javovská verze by to měla takto dělat: replaceAll("regex", "replacement") replaces all regex matches inside the string with the replacement string you specified.

Mne to fungovalo napriek tomu som sa rozhodol pre vlastné riešenie:

    private String clean(String S) {
        int len = S.length();
        StringBuffer result = new StringBuffer(len);
        boolean add = true;        
        for (int index = 0; index < len; index++) {
            if (S.charAt(index) == '&') add = !add;
            else if (add) result.append(S.charAt(index));
        }        
        return result.toString();
    }

Pretože, mám podozrenie že regulárne výrazy sú málo efektívne.

Java síce nie je moja šálka kávy, ale ak by som nemohol použiť regulárne výrazy, nerobil by som to po písmenkách:

private String clean (String text)
{
	String result = null;

	if (text != null)
	{
		int pos = 0;
		int ampPos = -1;
		boolean inside = false;
		StringBuilder temp = new StringBuilder (text.length ());
		
		while ((ampPos = text.indexOf ('&', pos = ampPos + 1)) != -1)
			if (inside = !inside)
				temp.append (text.substring (pos, ampPos));
		
		result = temp.append (text.substring (pos)).toString ();
	}
	
	return result;
}

Zpět do poradny Odpovědět na původní otázku Nahoru