Javascript заменить "" на "" - PullRequest
       1

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

0 голосов
/ 29 февраля 2012

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

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>

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

Ответы [ 7 ]

12 голосов
/ 29 февраля 2012

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

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

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

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

temp.replace(/'/g, '"')
3 голосов
/ 29 февраля 2012

Проблема в том, что

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

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

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

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

1 голос
/ 29 февраля 2012

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

Заменить будет заменять только первую найденную кавычку, если только вы неиспользуя нашего старого друга 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
1 голос
/ 29 февраля 2012

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

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

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

0 голосов
/ 29 февраля 2012
while (str.indexOf("'") >= 0)
    {
        var newStr = str.replace("'", "\"");
        str = newStr;
    }
0 голосов
/ 29 февраля 2012

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

temp = temp.replace(/'/g,"''");
0 голосов
/ 29 февраля 2012

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

temp.replace("'", "''");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...