求行:
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。成都創(chuàng)新互聯(lián)專業(yè)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站制作(企業(yè)站、成都響應(yīng)式網(wǎng)站建設(shè)公司、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗(yàn)的提升,我們力求做到極致!
RichTextBox1.GetLineFromChar(RichTextBox1.SelStart)+1
這個(gè)代碼呢,我的理解呢,是獲取在selstart的地方的行數(shù)。一般來講selstart的地方都是光標(biāo)的地方,然后會(huì)給你返回line。不過返回的時(shí)候要自己加1。不是很懂這個(gè)語法,有懂得可以教我一下
以上是求行數(shù)。
求列:
For i = 0 To RichTextBox1.SelStart
If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStart - i) 0 Then Exit For
j = j + 1
Next i
這個(gè)for循環(huán)呢,講的是檢查這一行光標(biāo)前有多少個(gè)列,然后用J輸出列的個(gè)數(shù)。
因?yàn)閂B6.0沒有RichTextBox1.GetFirstCharIndexOfCurrentLine這種語法。所以就得自己模擬這個(gè)過程。
具體怎么檢查的呢,首先將 i 從0循環(huán)到光標(biāo)處,
如果 【光標(biāo)字符數(shù)】處的行數(shù) 減去 【光標(biāo)字符數(shù)減去 i 個(gè)字符數(shù)】處的行數(shù)小于0了,我寫了個(gè)不為零。但此時(shí)寫小于零就可以。那么代表著換行了,同時(shí)也代表著光標(biāo)到上一行之間有多少字。用j存儲(chǔ)循環(huán)次數(shù),得出對(duì)應(yīng)列數(shù)。(我們中文習(xí)慣是叫第一列,但程序?qū)嶋H上是第零列,但在循環(huán)的時(shí)候就注意到并解決這個(gè)問題了)
如果你替換寫法,例如
If RichTextBox1.GetLineFromChar(RichTextBox1.SelStart) - RichTextBox1.GetLineFromChar(RichTextBox1.SelStart + i) 0 Then Exit For
j = j + 1
Next i
這個(gè) J 就對(duì)應(yīng)著光標(biāo)到該行結(jié)尾有幾個(gè)字符了,如果有需要可以使用,但一般不需要。
那么就像上面說的那樣,行列都求出來了,最后用事件和TEXT或者caption表現(xiàn)出來就好了
至于說總行數(shù)
RichTextBox1.GetLineFromChar(Len(RichTextBox1.Text)) + 1
通過對(duì)最后一個(gè)字符的位置(總長度)的行來判斷唄,不過也得加一。
可以把某個(gè)列為空就當(dāng)做是空行,你連接字符串是hdr=no,也就是第一行不作為列標(biāo)題,那么就是用的默認(rèn)的列標(biāo)題,F(xiàn)1,F(xiàn)2.。。這些。
比如,第一列的某行為空的話就當(dāng)做是空行,你可以加這個(gè)條件 where len([F1]) 0
如果文本很大,那用for、do就太慢太慢了,我給大家一個(gè)快速查詢的方法:
Dim Oc,Fs,S,X
Set Fs = Oc.OpenTextFile("C:\Test.Txt", 1)'用FSO打開TXT文件
S = Fs.ReadAll'獲取全文
Fs.Close'關(guān)閉文件
X = (Len(S) - Len(Replace(S, vbCrLf, ""))) / Len(vbCrLf) + 1 '統(tǒng)計(jì)總行數(shù):用字符串替換法得到一共多少個(gè)回車,然后再加一就得到總行數(shù)了
VB中可以在循環(huán)中使用Line Input # 語句一行行讀入文本,直到到達(dá)文件的結(jié)尾。
Line Input # 語句,從已打開的順序文件中讀出一行并將它分配給 String變量。
EOF 函數(shù),返回一個(gè) Integer,它包含 Boolean 值 True,表明已經(jīng)到達(dá)為 Random
或順序 Input 打開的文件的結(jié)尾。
具體代碼:
Private?Sub?Command1_Click()
Dim?i?As?Long
Dim?strj()?As?String
'?設(shè)置“CancelError”為?True
CommonDialog1.CancelError?=?True
On?Error?GoTo?ErrHandler
'?設(shè)置標(biāo)志
CommonDialog1.Flags?=?cdlOFNHideReadOnly
'?設(shè)置過濾器
CommonDialog1.Filter?=?"All?Files?(*.*)|*.*|Text?Files"??"(*.txt)|*.txt|Batch?Files?(*.bat)|*.bat"
'?指定缺省的過濾器
CommonDialog1.FilterIndex?=?2
'?顯示“打開”對(duì)話框
CommonDialog1.ShowOpen
'?顯示選定文件的名字
Debug.Print?CommonDialog1.FileName
str?=?CommonDialog1.FileName
Open?CommonDialog1.FileName?For?Input?As?#1
Do?Until?EOF(1)
Line?Input?#1,?s
Text1.Text?=?Text1.Text??s??vbCrLf
i?=?i?+?1
Loop
Close?#1
Debug.Print?i?'總行數(shù)
Exit?Sub
ErrHandler:
'?用戶按了“取消”按鈕
Exit?Sub
End?Sub
獲取文本行數(shù)函數(shù)
Const WM_USER = H400
Const EM_GETLINECOUNT = WM_USER + 10
#If Win32 Then
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hWnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Integer, _
lParam As Any) As Long
#Else
Private Declare Function SendMessage Lib "user" _
(ByVal hWnd As Integer, _
ByVal wMsg As Integer, _
ByVal wParam As Integer, _
lParam As Any) As Long
#End If
Function TextLineCount(txtObj As TextBox) As Long
If txtObj.MultiLine = True Then
TextLineCount = SendMessage(txtObj.hWnd, EM_GETLINECOUNT, 0, 0)
Else
TextLineCount = 1
End If
End Function
歡迎插其
本文標(biāo)題:vb.net統(tǒng)計(jì)文本行數(shù) c語言統(tǒng)計(jì)字?jǐn)?shù)
標(biāo)題網(wǎng)址:http://jinyejixie.com/article0/dosddio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、全網(wǎng)營銷推廣、外貿(mào)建站、手機(jī)網(wǎng)站建設(shè)、電子商務(wù)、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)