搜尋 字串 結果:
ASP.Net MVC 如果只輸出字串的話, 可用的事件有: 目前前台規劃配合 Template, 在各事件中做以下的工作
BaseController Constructor
TestController Construtor
Base BeginExecute: 記錄 requestContext, 提供 GetRouteValue 使用.
Child BeginExecute:
Base Initialize:
Child Initialize: 可以在這裡設定 master Page 的檔名
Child BeginExecuteCore
Base BeginExecuteCore: this.otMaster = new UW.Template(MasterPage); 在這個之後才能使用 otMaster
Child CreateActionInvoker: InitTemplate("Index.html"); 在這裡執行主要程式
Child OnAuthentication,
Base OnAuthentication
Child OnAuthorization
Base OnAuthorization
Child OnActionExecuting
Base OnActionExecuting 最後整理 Template.
Child Index(): return this.FinalHTML;
Bike, 2020/7/21 上午 10:58:12
SQL 字串比對, varchar 或 char 和 N'xxxxxx' 的比對會非常慢, 要注意.
Bike, 2019/6/3 下午 12:21:32
AddPageDebugMessage 造成購物車變慢.
因為有發現主要時間是花在 Coupon 的處理, 研突了半天, 覺得之前丟出來的 Debug 訊息太多, 所以我想把所有 coupon 處理時丟出來的 Debug 訊息關掉, 一個一個慢慢打開來看看哪一個步驟造成問題. 突然發現它就好了.
後來想想, 應該是因為我們把 Debug 訊息合併成大字串造成的, 這個花費的總時間會以 coupon 數量的平方或三次方的速度成長. 當 Coupon 的數量變多時, 花費的時間會成長的很快. 因為要夠多上線的 coupon 才會造成這個問題, 所以之前的測試都沒有發現這類的問題.
購物車中有用到 AddPageDebugMessage 請改成成使用 arraylist 的版本. 理論上會是固定時間, 另外還有做了一個開關, 要用定參數才會開啟 AddPageDebugMessage 的功能.
Bike, 2018/11/12 下午 04:14:37
寫程式這麼多年,終於被這個東西給害到,所以特別提一下
zero-width space: 就是沒有寬度的空白,字元碼 \u200b , 或是 urlencode = %e2%80%8b
當你從 word , excel ,PDF 複製文字貼到記事本,網頁textbox, 或是 visual studio
有時候會把這個碼也一起貼上,重點是: 你肉眼根本看不出來
2017-08-15 22:05:15 -> 2017前面有 \u200b, 尾巴也有
2017-08-15 22:05:15 -> 這個就正常
這會造成甚麼,DateTime.Parse 就會出錯,或是對字串做 MD5 hash 會造成錯誤的結果
然後就會一直 debug 找不出原因,要用 urlencode 測看看才會現出原形
另外,這個碼也無法用 Trim() 清掉,因為他不是 Char.IsWhiteSpace 成員
所以,從 word excel pdf 或是其他網頁 copy 文字貼到程式碼做測試
如果發生怪怪的bug,可能要思考一下是不是這個字元在作怪
轉換文章內容成為excel 檔案的時候
發生的錯誤
網路上查都好像是跟圖片有關的錯誤
後來才確認是 emoji 的問題
文章裡有出現
🙋♀️🙋♀️🙋♀️
這種東西
SQL:
SQL 好像也沒辦法完美的取代 ( 如果有辦法對準是哪個字元就可以 但如果是一個字串好像會無法取代)
只有剛好對到那個字元開頭時才能換
NCHAR(65039) NCHAR(8205)
Select TOP 10
Replace(SUBSTRING(content,10,15),NCHAR(65039) ,'XX') , ---HongKong️️️🙋♀️怎
REPLACE(SUBSTRING(content,17,8),NCHAR(65039),'OO') ---OO怎
FROM [Table]
C#
最後回到C#來處理
首先用 把string .ToArray() 變成char
找出字元後 轉成 int 來確認要怎麼表達這個 char
最後結果就變成>>
Convert.ToInt32(Table.Rows[0]["Content"].ToString().ToArray());
之後直接變成 char去取代
row["mycolumn"].ToString().Replace((char)65039, ' ').Replace((char)8205, ' ');
然後就暫時 沒錯誤了
只是這網站一直再更新
https://emojipedia.org/unicode-12.0/
所以未來可能還會有新的問題
目前還不知道甚麼快速的解法
sean, 2018/3/22 下午 03:21:41
先留個言, 有空來補內容.
VB
Public Module SqlStringExtention
<Extension()>
Function SQLStr(ByVal Original As String) As String
Return Original.Replace("'", "''")
End Function
<Extension()>
Function SQLTrim(ByVal Original As String) As String
Return Original.Trim.Replace("'", "''")
End Function
End Module
C#
//Extension methods must be defined in a static class
public static class StringExtension
{
/// <summary>
/// 把 ' 取代成 ''
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static string sqlStr(this string value)
{
return value.Replace("'", "''");
}
/// <summary>
/// 假設欄位名稱中不會有 [ 或 ] 的符號
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
public static string sqlField(this string value)
{
return "[" + value.Replace("[", "").Replace("]", "") + "]";
}
}
Bike, 2017/9/30 下午 04:51:18
LEN: 不會計入空白結尾.
DATALENGTH: 實際的長度.
Bike, 2017/8/19 上午 09:48:06
由於從欄位抓出的值 雖然是由逗點分隔 但整體資料容易被當成一組單一字串
例如
Table
#SomeTable
欄位 :
Id MemberIds
值
1 12,30,58
2 45,68,88
想要篩選 where member_Id in (select MemberIds from SomeTable where Id = 2)
會被當成 Id in ('45,68,88') 文字跟整數無法被篩選
解決方法之一
create table #SomeTable (Id int,MemberIds nvarchar(30))
insert into #SomeTable (Id,MemberIds) values (1,'12,30,58')
insert into #SomeTable (Id,MemberIds) values (2,'45,68,88')
select * from #SomeTable
create table #TargetTable (Id int,member_Id nvarchar(30))
insert into #TargetTable (Id,member_Id ) values (1,12)
insert into #TargetTable (Id,member_Id ) values (2,30)
insert into #TargetTable (Id,member_Id ) values (3,45)
insert into #TargetTable (Id,member_Id ) values (4,58)
insert into #TargetTable (Id,member_Id ) values (5,68)
insert into #TargetTable (Id,member_Id ) values (6,88)
select * from #TargetTable
DECLARE @MemberIds nvarchar(200);DECLARE @SQLString nvarchar(200);
select @MemberIds =MemberIds from #SomeTable(nolocK) where Id = 2
SET @SQLString = N' select * from #TargetTable where member_Id in (' + @MemberIds + ')' ;
EXECUTE sp_executesql @SQLString
將整體都當成字串 就可以執行了
如果用逗點隔開如果用逗點隔開的是字串
如:
Hi,Im,String
可以先把它加上單引號
select '''' + Replace(MemberIds ,',','''' +',' + '''') + '''' from #SomeTable
sean, 2017/6/12 下午 12:09:48
最近做一些int型別轉換的時候,發現一些現象,以後寫code的時候要注意
1. VB.NET IsNumeric 用逗號可以過,例如 IsNumeric("1234,5678") ==> True
但是轉型別 CInt or Convert.ToInt32 就會出錯,所以用 IsNumeric 不是很保險,最好用 int.TryParse
2. Convert.ToInt32(char) 會抓出該 char 的 ascii code, 而不是該文字代表的數字
Convert.ToInt32('9') ==> 57 (C# 用單引號代表是 char)
Convert.ToInt32("9") ==> 9
Convert.ToInt32('A') ==> 65 (C# 用單引號代表是 char)
Convert.ToInt32("A") ==> error: 輸入字串格式不正確。
darren, 2014/10/28 下午 07:10:28