Portal > Foren > Java > Allgemeine Java-Programmierung > Suche String.replaceAll ohne Regex
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 16.09.2005, 10:38 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 16.09.2005
Beiträge: 12
Standard Suche String.replaceAll ohne Regex

Moin,

ich will eigentlich nur genau das, was replaceAll macht nur ohne dem Regex. Und da ich bis dato nirgends was gefunden hab, was mir nen String komplett escapet stöhren die ( und ) im Namen und ich kann auch nicht sicher sein, dass nur ( und ) vorkommen.
Sicaine ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.09.2005, 17:45 Nach oben    #2
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.129
Standard

http://java.sun.com/j2se/1.5.0/docs/...a.lang.String)
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.09.2005, 07:40 Nach oben    #3
Neuer Benutzer
 
Registriert seit: 16.09.2005
Beiträge: 12
Standard

Sorry mein Fehler. Ich such das ganze für Java 1.4.2
Sicaine ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.09.2005, 09:28 Nach oben    #4
LordOfCodes
Gast
 
Beiträge: n/a
Standard

Hi

Meinst du sowas?
Code:
	public static String replace(String s,String remove, String replace) {
		String in = s;
		String out = "";
		if (remove.length()>0) {
			while ((in.indexOf(remove) > -1) && (in.length() > 0)) {
				int cut1 = in.indexOf(remove);
				int cut2 = cut1 + remove.length();
				out += in.substring(0,cut1) + replace;
				in = in.substring(cut2,in.length());
			}
		}
		out += in;
		return out;
	}
Greets
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.09.2005, 10:05 Nach oben    #5
Neuer Benutzer
 
Registriert seit: 16.09.2005
Beiträge: 12
Standard

Soweit ich das jetzt ma schnell überlesen hab, schneidet es immer einen teil aus in und hängts in out rein bis in leer is und ersetzt es wärenddessen?

Ja sowas such ich allerdings hätt ich halt eher auf ne fertige Methode zurückgegriffen als das selbst zu implementieren.

Sollts dafür nix anders geben tx@lord sieht gut aus die implementierung
Sicaine ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.09.2005, 15:52 Nach oben    #6
Neuer Benutzer
 
Registriert seit: 14.10.2004
Beiträge: 25
Standard

Also ich hätte das so gemacht:
Code:
    public static String replace(String in,String remove, String replace) {
	if (in==null || remove==null || remove.length()==0) return in;
	StringBuffer sb = new StringBuffer();
	int oldIndex = 0;
	int newIndex = 0;
	int remLength = remove.length();
	while ( (newIndex = in.indexOf(remove,oldIndex)) > -1) {
			//copy from last to new appearance
			sb.append(in.substring(oldIndex,newIndex));
			sb.append(replace);
			//set old index to end of last apperance.
			oldIndex = newIndex + remLength;
	}
	int inLength = in.length();
	//add part after last appearance of string to remove
	if(oldIndex<inLength) sb.append(in.substring(oldIndex,inLength));
	return sb.toString();
    }
Ist zwar ein wenig länger aber ich könnte mir vorstellen, dass das performanter läuft.
Ich habe das ziemlich schnell aufgeschrieben, wenn da also Fehler drin sind bitte melden

Gruß,
Max
Böreck ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.09.2005, 08:00 Nach oben    #7
Neuer Benutzer
 
Registriert seit: 16.09.2005
Beiträge: 12
Standard

Jo deins sollte wegen dem Stringbuffer schneller sein hab mir aber wegen meinem Anwendungsfall das ganze nochmal bisl anders implementiert:

Code:
 public static String replaceMe(String s, String find, String replace){
	  String in = s;
	  StringBuffer out = new StringBuffer();
	  boolean isInTag = false;
	  for(int i = 0; i < in.length(); i++){
		  if(isInTag){
			  if(s.charAt(i) == '<' && s.substring(i, i + 4).equals("</a>")){
				  i += 3;
				  out.append("</a>");
				  isInTag = false;
			  }else{
				  out.append(s.charAt(i));
			  }  
		  }else{
			  if(s.charAt(i) == '<' && s.charAt(i + 1) == 'a' && s.charAt(i + 2) == ' '){
				  isInTag = true;
				  out.append(s.charAt(i));	
			  }else if(s.charAt(i) == find.charAt(0) && s.substring(i, i + find.length()).equals(find)){
				  out.append(replace);
				  i += find.length() - 1;
			  }else{
				  out.append(s.charAt(i));
			  }
		  }
	  }
	  return out.toString();
  }
Speedmäßig bau ich auf die abarbeitungsreihenfolge von && sollte jemand tipps dazu haben, nur herdamit : )

Ach ja es soll halt alles in <a></a> nich ersetzten :>
Sicaine ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.09.2005, 10:02 Nach oben    #8
Neuer Benutzer
 
Registriert seit: 14.10.2004
Beiträge: 25
Standard

Ich habe auch mal eine modifizierte Variante gebaut, die das vorherige replace benutzt und auch so ähnlich aufgebaut ist. Sie scheint trotz den replace-aufrufen recht flott unterwegs zu sein. Allerdings produziert sie mehr Garbage
Code:
    public static String replace2(String in,String find, String replace){
        StringBuffer sb = new StringBuffer();
        int oldIndex = 0;
        int newIndex = 0;
        while ( (newIndex = in.indexOf("<a ",oldIndex)) > -1) {
			sb.append(replace(in.substring(oldIndex,newIndex),find,replace));
			oldIndex = newIndex;
			newIndex = in.indexOf("</a>",newIndex+3)+4;
			sb.append(in.substring(oldIndex,newIndex));
			oldIndex = newIndex;
	}
	int inLength = in.length();
	if( oldIndex<inLength)
		sb.append(replace(in.substring(oldIndex,inLength),find,replace));
	return sb.toString();
    }
Böreck ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Regex Hilfe gesucht ljungi PHP-Programmierung 15 05.11.2006 15:41
Suche MP3-Player mit "spezieller" Funktion Mirod Gesuche 4 10.07.2006 09:51
Agent Ransack - Suchen mit Regex und mehr robo47 Plauderecke 0 09.01.2006 21:18
Suche programmieren Bookworm PHP-Programmierung 29 09.12.2005 13:37
Suche Icons Chr!s Plauderecke 6 17.09.2005 11:50


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45