Ich hätte gfoidls post ja so verstanden, dass RegEx hier die bessere Lösung ist..
Wie herbivore schon sagte, das klappt ganz gut:
string input = "Hans wollte 40 km laufen, aber ab 20 km hatte er keine Puste mehr";
string wordToFind = "ab";
string regExWordDelimiter = "\\b";
Regex regEx = new Regex(wordToFind + regExWordDelimiter, RegexOptions.IgnoreCase | RegexOptions.Multiline);
IEnumerable matches = regEx.Matches(input);
foreach (Match match in matches)
{
System.Console.Write(match.Value + " ");
}
System.Console.ReadKey();
Also der //Constructor
Kommentar ist wirklich Horror, ein //Nothing
allerdings lesbarer als {}
oder {;}
. Allerdings spricht auch nix gegen // Explicit default constructor
😃
Da würde ich mich nicht drauf verlassen. Oft ist String.Join schneller:
StringBuilder vs. String / Fast String Operations with .NET 2.0 - CodeProject
Übrigens würde ich mir die abart von ungarischer Notation (String sName; int iZahl;) möglichst schnell wieder abgewöhnen. Das ist kein guter Stil und erhöht den Wartungsaufwand. Du musst nämlich bei einer Typänderung im Zuge eine Refactorings zusätzlich noch die den Variablennamen ändern, was gern vergessen wird. Gerade wenns dann von Long -> Int oder so geht kann das schnell zu bugs führen. Vielleicht interessiert dich ja das Buch Clean Code.
Es liegt sicher am namespacemanager und die hier gezeigte lösung müsste funktionieren. Allerdings wärs komfortabler wenn man den defaultnamespace auch dem namespacemanager als default bekannt macht (präfix string.empty), dann spart man sich die präfixe im xpath ausdruck (welche ich gerne vergesse und dann doof schau).
Je nachdem, welcher Knoten aktuell der Kontextknoten ist, kann der xpath ausdruck stimmen oder auch nicht. Deiner ist auf jeden fall auch richtig, wobei du dir den doppelslash sparen kannst.
passen würde unter anderem (Kontext root):
//item/presentation/material/mattext
/questestinterop/item/presentation/material/mattext
//presentation/material/mattext
/*/presentation/material/mattext
Gut zum testen ist immer der xpath visualizer.
das hat nix mit nested classes zu tun sondern heißt _composition _und ist meist der vererbung vorzuziehen. von daher gut, aber am thema vorbei 😃
Du kannst ein Node(Set) via XPath selektieren und dann damit arbeiten.
XmlDocument xd = new XmlDocument();
xd.Load("test.xml");
XmlNode xn = xd.SelectSingleNode("//User");
Von da aus kannst du mit der XmlNode arbeiten. Für mehrere Nodes gibts dann eben XmlNodeSet und SelectNodes.
Rein IE ist natürlich was anderes als rein IE6, sorry wenn ich dich falsch verstanden habe. Und Siemens ist jetzt nicht unbedingt ein negativbeispiel sondern eher einfach eines aus dem richtigen leben. Die meisten Großkonzerne sind in der IT relativ rückständig weil unflexibel durch lange entscheidungswege.
Auch solltest du alle aktuellen Browser unterstützen,
pauschal ausgedrückt, ja aber es gibt fälle wo man das nciht muss. z.b. im businessumfeld. wenn man weiß das nur der IE zum einsatz kommt, kann man sich die ganzen browserspezifischen unterscheidungen sparen, was vor allem in javascript deutlich einfacher ist.
Das ist aber auch etwas kurzsichtig. Siemens entwickelt Webanwendungen immer noch für den IE6 und testet auch nur auf dem IE6. Die große Überraschung: Man kann nicht auf den IE8 und vor allem den FF umsteigen, weil die alte Software teilweise nicht mehr korrekt dargestellt wird. Vorsichtshalber wird weiter nur für den IE6 entwickelt, damit man sich einen möglichen umstieg auf einen halbwegs aktuellen browser (welcher ist egal) endgültig verbaut. Ich behaupte mal dass standardkonforme webanwendungen immer gut investiertes geld sind.
Nette geschichte: Die kompatibilität von Vista zu bestehenden anwendungen wurde solange getestet, bis W7 raus kam. Also hat man den umstieg zu Vista übersprungen und testet jetzt fleißig W7 - wahrscheinlich bis W8 kommt.
Zum autor: du hast dir deine meinung ja bereits gebildet. Schau dir trotzdem erst mal das bestehende tool an und finde heraus warums langsam läuft. Neuimplementierung ist meistens sehr teuer im vergleich zu einem hardwareupgrade oder ein paar wartungsarbeiten an überlasteten systemen.
Wir hatten übrigens mal ein ähnliches problem, da wars eine webanwendung die schrecklich langsam lief obwohl genug ressourcen vorhanden waren. Nach wochenlangem suchen und testen ist uns dann aufgefallen, dass alle server neu gebootet wurden (winupdate) und dabei eine alte kopie der webanwendungs-vm mit der gleichen MAC gebootet ist. Je nach auslastung hat dann im browser alte oder neue VM geantwortet 😃
Vielen Dank euch beiden, das macht das ganze einfach viel verständlicher (nicht nur für mich, sondern für jeden besucher dieses threads) und man muss nicht erst umständlich mit dem debugger durch den code gehen, um zu begreifen was passiert. Das ist meiner Meinung nach das bisschen Mehraufwand wert 😉
die aufgabe war wirklich interessant, kann vllt einer noch für nicht-mathematiker erklären was da passiert? aus
Im Prinzip funktioniert es ähnlich dem Sieb des Eratosthenes. Es werden alle Zahlen im Suchbereich markiert, die irgendwie über eine Summe erreichbar sind. werd ich nicht schlau. Ich kenn zwar das Sieb des Eratosthenes und verstehs auch, den transfer zu diesem problem bekomme ich aber leider nicht hin. Allgemein würde man sich über 2 oder 3 kommentare in den Lösungen immer freuen 😉