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