Javascript заменить "на" ''"

Я пытаюсь заменить символ "" на строку "", используя метод replace, например:

temp.replace("\'", "''");

но кажется, что он ничего не заменяет. как мне написать команду, чтобы заменить желаемый символ нужной строкой (я пытаюсь заменить ее в следующем xml):

<Module ForceTabs="1">
    <Events>
        <Event Value="onafter_moduleinit_beforedraw()" Type="onafter_moduleinit_beforedraw"/>
    </Events>
    <Section Id="Header" Type="header" Caption="Header" ContainerCSS="background:#C1E0F4;border-bottom:2px groove;margin-bottom:3px;padding:10 3 3 3">
        <Containers>
            <Form Id="Header" Caption="General Details" Source="Request" Layout="Fixed">
                <Layout>
                    <table cellaspacing="0" cellpadding="0">
                        <tr>
                            <td>
                                <ControlRef Id="Origin" ShowCaption="1"/>
                            </td>
                            <td>
                                <ControlRef Id="Type" ShowCaption="1"/>
                            </td>
                            <td>
                                <ControlRef Id="Process" ShowCaption="1"/>
                            </td>
                            <td width="20" align="center">
                                <span class="separator"/>
                            </td>
                            <td>
                                <ControlRef Id="FindBy" ShowCaption="1"/>
                            </td>
                            <td>
                                <ControlRef Id="Find"/>
                            </td>
                            <td>
                                <button width="30" onclick="doFindCustomer()">
                                    <Caption Caption="GO"/>
                                </button>
                            </td>
                        </tr>
                    </table>
                </Layout>
                <Controls>
                    <Control Id="Origin" Caption="Origin" FieldName="Origin" DataType="string" Width="90" CaptionWidth="70" ReadOnly="1" Mandatory="1" Hidden="1"/>
                    <Control Id="Type" Caption="Type" FieldName="Type" DataType="select" Width="60" CaptionWidth="40" ReadOnly="1" Mandatory="1" DefaultValue="Service" Hidden="1">
                        <Member Value="Allert" Caption="Allert"/>
                        <Member Value="Service" Caption="Service"/>
                        <Member Value="Marketing" Caption="Marketing"/>
                    </Control>
                    <Control Id="Process" Caption="Process" FieldName="Process" DataType="string" Width="90" CaptionWidth="70" ReadOnly="1" Mandatory="1" Hidden="1"/>
                    <Control Id="FindBy" Caption="Find:" VCaption="Find By" FieldName="FindBy" DataType="select" Width="90" CaptionWidth="50" ReadOnly="0" Mandatory="0" CaptionCSS="font-weight:bold" DefaultValue="IMTSI">
                        <Member Value="IMTSI" Caption="IMTSI"/>
                        <Member Value="ID" Caption="ID"/>
                    </Control>
                    <Control Id="Find" Caption="Find Value" FieldName="Find" DataType="string" Width="90" CaptionWidth="60" ReadOnly="0" Mandatory="0" CaptionCSS="font-weight:bold"/>
                </Controls>
            </Form>
        </Containers>
    </Section>
    <Section Id="1" Type="page" Caption="Message Details">
        <Containers>
            <Form Id="General" Caption="General Details" Source="Request" Layout="Fixed">
                <Controls>
                    <Control Id="MessageType" Caption="Message Type" Source="Param[@Name = 'MessageType']" FieldName="Value" DataType="select" Width="150" CaptionWidth="120" ReadOnly="1" Mandatory="1" DefaultValue="Allert" Action="handleMessageTypeChange()" BreakAfter="0">
                        <Member Value="SMS" Caption="SMS"/>
                        <Member Value="EMAIL" Caption="EMAIL"/>
                        <Member Value="ATOS" Caption="ATOS"/>
                        <Member Value="SELF SERVICE" Caption="SELF SERVICE"/>
                    </Control>
                    <Control Id="Language" Caption="Language" Source="Param[@Name = 'Language']" FieldName="Value" DataType="string" Width="100" CaptionWidth="90" ReadOnly="1" BreakAfter="1"/>
                    <Control Id="FirstName" Caption="First Name" Source="Param[@Name = 'FirstName']" FieldName="Value" DataType="string" Width="350" CaptionWidth="120" BreakAfter="1"/>
                    <Control Id="LastName" Caption="Last Name" Source="Param[@Name = 'LastName']" FieldName="Value" DataType="string" Width="350" CaptionWidth="120" BreakAfter="1"/>
                    <Control Id="IMTSI" Caption="IMTSI" Source="Param[@Name = 'IMTSI']" FieldName="Value" DataType="string" Width="350" CaptionWidth="120" BreakAfter="1" Mandatory="0"/>
                    <Control Id="Mobile" Caption="Mobile" Source="Param[@Name = 'Mobile']" FieldName="Value" DataType="string" Width="350" CaptionWidth="120" BreakAfter="1" Mandatory="1"/>
                    <Control Id="Email" Caption="Email" Source="Param[@Name = 'Email']" FieldName="Value" DataType="string" Width="350" CaptionWidth="120" BreakAfter="1" Mandatory="0"/>
                    <Control Id="Subject" Caption="Subject" Source="Param[@Name = 'Subject']" FieldName="Value" DataType="string" Width="350" CaptionWidth="120" BreakAfter="1" MaxLen="40" Hidden="1"/>
                    <Control Id="Content" Caption="Content" Source="Param[@Name = 'Content']" FieldName="Value" DataType="longstring" Width="350" CaptionWidth="120" Height="60" BreakAfter="1" MaxLen="50" Mandatory="1" SeparateBefore="1" SeparateAfter="1"/>
                    <Control Id="Sender" Caption="Sender" Source="Param[@Name = 'Sender']" FieldName="Value" DataType="string" Width="350" CaptionWidth="120" ReadOnly="1" BreakAfter="1"/>
                    <Control Id="Priority" Caption="Priority" Source="Param[@Name = 'Priority']" FieldName="Value" DataType="select" Width="350" CaptionWidth="120" BreakAfter="1" DefaultValue="LOW">
                        <Member Value="LOW" Caption="Low" Glyf="../../GUIGenerator_V2/assets/themes/Images/flag_blue.png"/>
                        <Member Value="MED" Caption="Medium" Glyf="../../GUIGenerator_V2/assets/themes/Images/flag_yellow.png"/>
                        <Member Value="HIGH" Caption="High" Glyf="../../GUIGenerator_V2/assets/themes/Images/flag_red.png"/>
                    </Control>
                </Controls>
            </Form>
        </Containers>
    </Section>
</Module>

Я должен заменить сингл на два сингла, я не могу изменить его на "но до"

Ответы

Ответ 1

while (str.indexOf("'") >= 0)
    {
        var newStr = str.replace("'", "\"");
        str = newStr;
    }

Ответ 2

Ваш код просто заменяет один экземпляр (первый найденный). Вы должны заменить все экземпляры. Вы можете сделать это, используя регулярное выражение и добавив флаг g в конец, что означает "глобальный поиск". Вот так:

temp.replace(/'/g, "''")

Вот рабочий пример: http://jsfiddle.net/Q2Uyv/ (введите что-то в поле "В" и нажмите "Преобразовать" ).

Если вы на самом деле пытаетесь заменить одиночные кавычки двойными кавычками (вместо удвоенной последовательности одиночных кавычек), сделайте следующее:

temp.replace(/'/g, '"')

Ответ 3

Проблема заключается в том, что

temp.replace("\'", "''");

заменит только первый экземпляр '. Чтобы исправить это, сделайте следующее

temp.replace(/'/g, "''"));

Это гарантирует, что он будет работать, и заменяет все экземпляры одной кавычки, а не только первой.

Ответ 4

Трюк цитирует каждую строку с другим символом кавычки:

temp.replace(/'/g, '"');

Изменить: Бен Ли правильно относится к регулярному выражению, обновленному выше. Тем не менее, я все еще собираю его, который вы хотите заменить на " (одна двойная кавычка), а не '' (две одинарные кавычки).

Ответ 5

Фактически вы пытаетесь заменить (\ '), а не только символ одиночной кавычки. Нет необходимости избегать одиночной кавычки в строке, ограниченной двойными кавычками, потому что они не означают конец строки...

Заменить заменит только первую цитату, если вы не используете нашего старого друга Regexp. Недостаток регулярных выражений, как правило, медленный. Я не проверял, что быстрее, но вы можете попробовать использовать split:

var chunks = temp.split("'").join("''");

test = "string cont'aining single 'quotes".split("'").join("''");//in firebug console
//returns "string cont''aining single ''quotes" as expected

Ответ 6

Вы просто попробовали это?

temp.replace("'", "''");

Ответ 7

Итак, это в основном изменение символа одиночной кавычки с двумя символами одиночной кавычки, не так ли? Если в этом случае вы можете использовать глобальный флаг, g в конце регулярного выражения yoir и, возвращая его к вашему значению (темп)

temp = temp.replace(/'/g,"''");