全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:889
推到 Plurk!
推到 Facebook!

请问如何使一字符串覆盖到另一字符串的指定位置

尚未結案
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-24 19:56:20 IP:218.16.xxx.xxx 未訂閱
请问如何使一字符串覆盖到另一字符串的指定位置。例: 将字符串'abc'覆盖字符串s:string[20]从16号位开始。 也就是使string[16]:='a'..... 我现在的做法是先删除所插字符位置的字符,然后在把‘abc’插入。 自觉这个方法不好,不知能有什么更好的方法。特相各位大大求教,谢谢。 努力,相信会做的更好!
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-24 22:02:37 IP:63.84.xxx.xxx 未訂閱
您好﹕    不知道你使用何種資料庫﹐以Access2000而言﹐如下﹕ update 客戶 Set 客戶名稱=Mid(客戶名稱,1,4) + '有限公司' //新的客戶名稱欄位值會等于舊客戶名稱欄位的第1位到第4位值再加上'有限公司'﹒    SQL資料庫形態可將Mid換成SubString﹒    以上小弟已經經過Access2000的測試﹐希望是您需要的﹒ 努力,相信會獲得美麗! 忻晟
------
忻晟
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-24 22:16:41 IP:63.84.xxx.xxx 未訂閱
補充一下﹕    Mid或者SubString函數的參數中﹐第一個參數代表起始字元﹐第二個參數代表抓取的長度(可以省略)﹐比如說﹕ 客戶名稱中有一值為忻晟公司 Mid(客戶名稱,2) 即得值﹕'晟公司' Mid(客戶名稱,2,2) 即得值﹕'晟公'    另外﹐Mid或者SubString函數抓出的為字元的位元組﹐而非字節﹐故無論是英文字母﹑數字﹑中文字﹐都是為一個單位﹒ 努力,相信會獲得美麗! 忻晟
------
忻晟
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-24 22:57:42 IP:61.230.xxx.xxx 未訂閱
引言: 请问如何使一字符串覆盖到另一字符串的指定位置。例: 将字符串'abc'覆盖字符串s:string[20]从16号位开始。 也就是使string[16]:='a'..... 我现在的做法是先删除所插字符位置的字符,然后在把‘abc’插入。 自觉这个方法不好,不知能有什么更好的方法。特相各位大大求教,谢谢。 努力,相信会做的更好!
用標準字串指令, 是比較不會出錯. 不過你若是要求快, 且要輸入的字串很肯定沒問題的話, 可以這樣做 strlcopy(@s[16],'abc',3) ; ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-25 20:09:53 IP:218.16.xxx.xxx 未訂閱
引言: 用標準字串指令, 是比較不會出錯. 不過你若是要求快, 且要輸入的字串很肯定沒問題的話, 可以這樣做 strlcopy(@s[16],'abc',3) ; ...Aquarius
这样不行啊!我定义一个S:STRING[40] 这样赋值后S变为‘F ’ 努力,相信会做的更好!
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-26 00:18:04 IP:61.230.xxx.xxx 未訂閱
引言: 这样不行啊!我定义一个S:STRING[40] 这样赋值后S变为‘F ’ 努力,相信会做的更好!
不行?? 你的 S 有給初值嗎? 若你的 S:='F' ; 套用我那段後, S 還是只會等於 F 呀!! 因為你的字串中間, 夾了 #0 , 當然就只顯示 #0 之前的字. s:='12345678901234567890' ; strlcopy(@s[16],'abc',3) ; ShowMessage(s) ; 這樣就會是你要的. ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
xiaoning79627
初階會員


發表:46
回覆:60
積分:26
註冊:2002-11-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-26 17:27:40 IP:219.130.xxx.xxx 未訂閱
引言: 不行?? 你的 S 有給初值嗎? 若你的 S:='F' ; 套用我那段後, S 還是只會等於 F 呀!! 因為你的字串中間, 夾了 #0 , 當然就只顯示 #0 之前的字. s:='12345678901234567890' ; strlcopy(@s[16],'abc',3) ; ShowMessage(s) ; 這樣就會是你要的. ...Aquarius
我的S给了个全为0的初值。按你的方法,‘abc’是覆盖了原来的字符,但其后的字符却没了。也就是s[18]以后的值都没了。该怎么处理呢?谢谢 努力,相信会做的更好!
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-26 18:40:35 IP:211.23.xxx.xxx 未訂閱
引言: 我的S给了个全为0的初值。按你的方法,‘abc’是覆盖了原来的字符,但其后的字符却没了。也就是s[18]以后的值都没了。该怎么处理呢?谢谢 努力,相信会做的更好!
其後的字符? 你都填 0 , 其後那有什麼字符? 搞不清楚你要的功能倒底是怎樣的... 把你原本用 刪除再插入 的那個 FUNCTION 貼出來看看吧!! 這樣我才能了解你倒底是要做什麼樣的 FUNCTION 呀!! 其實... 用我提供這個方法, 只是讓你有個方向, 怎麼完成覆蓋字串的 FUNCTION. 怎麼好像變成在幫你寫 FUNCTION 了..... ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-07-26 18:43:38 IP:211.23.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject); var s : string ; begin s:='12345678901234567890' ; //strlcopy(@s[16],'abc',3) ; Move('abc',s[16],3) ; ShowMessage(s) ; end; ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
系統時間:2024-05-10 12:06:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!