簡體   English   中英

字符串替換在javascript中不起作用(帶雙引號)

[英]String replace does not work in javascript (with double quotes)

請查看以下代碼,如果我未執行該函數中的“衛生”步驟,則該代碼不會替換字符串值。

有人可以幫助我理解這一點嗎?

完整的代碼:

<script type="text/javascript">
function replaceString(orgStr,oldStr,newStr){

//############# Sanitary Steps #############//
oldStr = oldStr .replace(/[ ]+/g,"$");
oldStr = oldStr .replace(/[$]+/g," ");
orgStr = orgStr .replace(/[ ]+/g,"$");
orgStr = orgStr .replace(/[$]+/g," ");
newStr = newStr .replace(/[ ]+/g,"$");
newStr = newStr .replace(/[$]+/g," ");
//############# Sanitary Steps #############//

orgStr = orgStr.replace(oldStr,newStr);
if(orgStr.indexOf(oldStr) != -1){
orgStr = replaceString(orgStr,oldStr,newStr)
}
return orgStr;
}
var fields = ['"Employee Expense Facts"."Total Expense"','"Expense Amount by Expense Type Facts"."Airfare Expense Amount"'];
var selectedField = 0;
var selectedField = 0;
var qry = 'SELECT rcount(1) s_0, "Employee Expenses"."Time"."Date" s_1, "Employee Expenses"."Employee Expense Facts"."Total Expense" s_2 FROM "Employee Expenses" WHERE ("Employee Expense Facts"."Total Expense" IS NOT NULL) ORDER BY 1, 2 ASC NULLS LAST WHERE ("Employee Expense Facts"."Total Expense" IS NOT NULL) ORDER BY 1, 2 ASC NULLS LAST';
qry = qry .replace(/[\n\t\r]+/g," ");
var qry2 = replaceString(qry,""+fields[0],""+fields[1]);
console.log(qry2);

</script>

幫助我了解為什么我需要執行這些衛生步驟??? 我只是通過反復試驗的方法找到了解決方案。

我的建議是:丟棄所有代碼!

現在再次開始,通過普通的formsubmit或ajax調用將數據從客戶端傳遞到服務器。 現在在服務器端處理它們。

並永遠記住第一條規則:

1)您永遠不能相信所有用戶都能按照自己的方式進行操作。

這就是為什么永遠不要創建您的SQL客戶端!

問題出在SQL本身中:

SELECT rcount(1) s_0,
       "Employee Expenses"."Time"."Date" s_1,
       "Employee Expenses"."Employee Expense Facts"."Total Expense" s_2 
FROM   "Employee Expenses" 
WHERE ("Employee Expense Facts"."Total Expense" IS NOT NULL)
       ORDER BY 1, 2 ASC NULLS LAST 
WHERE ("Employee Expense Facts"."Total Expense" IS NOT NULL)
       ORDER BY 1, 2 ASC NULLS LAST

我發現有雙引號,即使使用轉義符后也不會替換。 我嘗試用特殊字符替換(“),然后執行字符串替換,但未能成功完成。

令人驚訝的是,如果您在本地HTML文件上創建此函數,則無需使用衛生代碼即可運行。 但是,當我在服務器上上傳相同的代碼時,它不起作用。 為此,我不得不設置衛生管線。

如果還有其他人找出原因,請告訴我:)

謝謝vx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM