2009-07-28 13 views
0

Ich habe eine Zeichenfolge wie folgt:JQuery: Doing einige Operationen auf Strings

Heading 
Some interesting text here 
HeadingSome interesting text hereHeading 
Some interesting text here 
Heading 
Some interesting text here 

Was ich tun möchte, ist eine andere Position im Rahmen der dritten Überschrift hinzuzufügen, so dass es so am Ende aussehen würde:

Ich bin auf der Suche nach einer verallgemeinerten Methode, um eine Überschrift auszuwählen und anzuhängen.

Hier ist ein zweites und drittes Beispiel:

ich einen String haben. Verwenden Sie keine DOM-Begriffe, da sie zu Verwirrung führen.

Ich möchte die Zeichenfolge "und mein Auto ist rot" zur dritten Wiederholung von "Mein Name ist Mark."

My name is Mark. My name is Mark. My name is Mark and my car is red. My name is Mark. 

Hier ist ein weiteres Beispiel: ‚Mein Auto ist blau‘

My car is red. My car is red. My car is red. My car is red. 

Am vierten Wiederholung ich den Text ändern möchten !

My car is red. My car is red. My car is red. My car is blue. 

Dank

Ich fragte eine potenziell im Zusammenhang Frage, die ich nicht in der Lage war, eine Antwort zu finden, aber jeder dort sagt, dass es einfach ist, mit Regex zu tun. Javascript String Library

Edit: Regex zu den Tags hinzugefügt

Ich bin so verwirrt.Anscheinend haben die Leute ein Problem mit der Frage.Wenn Sie denken, dass die Frage einige Informationen fehlt, bitte fragen, ich werde mein Bestes tun, um eine sinnvolle questio erstellen n.

Bearbeiten: Weitere Beispiele hinzugefügt.

Danke!

+5

Die verallgemeinerte Methode heißt "das DOM". – Boldewyn

+2

Wenn das eine Zeichenfolge ist, was entscheidet dann, was eine Überschrift ist? –

+0

Die Zeichenfolge 'Heading'. – Mark

Antwort

3

Dies scheint zu funktionieren ...

// headingIndex starts at 1... 
function appendTo(currentText, headingIndex, newText) { 
    var arr = currentText.split('Heading'); 
    arr[headingIndex] += newText; 
    return arr.join('Heading'); 
} 

Es wird die gesamte Zeichenfolge durch den Text „Heading“ aufgeteilt, so dass Sie im Grunde einen 1-basierte-Index Array der „Heading“ Unterabschnitte haben, die dann kann einfach angehängt werden und dann wieder zusammengefügt werden. Sie können dies ändern, um den Text vollständig zu ersetzen, wenn Sie das möchten.

+0

+1 für die Verwendung von Split und Join. – Boldewyn

+0

Vielen Dank. Kannst du mir helfen, das Beispiel funktionieren zu lassen? http://jsbin.com/ufoqo Vielen Dank, das ist ziemlich wie ich mir vorgestellt, es würde funktionieren. – Mark

+0

Interessant, jsbin nie zuvor verwendet ... ordentlich. Ich denke, ich habe es bearbeitet, was Sie wollten ... –

1

Um ein bestimmtes Element auszuwählen, können Sie die Indexfilter (eq = equals, lt = less than usw.) betrachten, wie zB: $ ('h2'). Eq (3) .append (...)

EDIT

als Ihre Anfrage zu sehen, ist in Bezug auf die als Strings arbeiten, die oben noch angewendet werden könnte, wenn man es so wickeln:

var snippet = $('<div>'+stringToManipulate+'</div>'); 
snippet.find('h2').eq(3).html(snippet.find('h2').eq(3).html()+'more text...'); 
stringToManipulate = snippet.html(); 

Zugegeben, das ist spezifisch Code, aber es ist nur um die allgemeine Idee zu zeigen. Ich hoffe das hilft.

+0

Danke, aber ich denke nicht, dass das funktionieren würde. .find ('h2') sucht nach einem Element, nicht nach einem Stück String, wie die Frage fragt. – Mark

+1

Nein, die erste Codezeile ist hier der Schlüssel. Wenn sie in die $ -Funktion eingeschlossen wird, vorausgesetzt, dass der Code ein gültiger HTML-Code ist, wird ein jQuery-Wrapped-Stück dom anstelle einer Zeichenfolge an die Variable 'snippet' zurückgegeben. Dann können Sie jQuery-Funktionen wie "find" ausführen. Probieren Sie es selbst aus –

+0

@ d., Er hat keine H2-Tags in diesem Stück Schnur. Er möchte grundlegende String-Manipulation. –

Verwandte Themen