VB.net中任何提取文本文件中的逗号分格数据? VB怎么取用用逗号分隔的数据

C\u8bed\u8a00\u4e2d\u5982\u4f55\u8bfb\u53d6\u4ee5\u9017\u53f7\u5206\u5272\u7684\u6587\u4ef6\u4e2d\u7684\u6570\u636e?

\u5bf9\u4e8e\u8fd9\u4e2a\u95ee\u9898\uff0c\u6709\u4e24\u79cd\u89e3\u51b3\u65b9\u6848\u3002
\u4e00\uff0c\u76f4\u63a5\u7528scanf\u8fdb\u884c\u683c\u5f0f\u5316\u8f93\u5165\u3002
\u6ee1\u8db3\u4ee5\u4e0b\u4e24\u79cd\u6761\u4ef6\u53ef\u4ee5\u7528scanf\u8fdb\u884c\u8f93\u5165:
1 \u8981\u8f93\u5165\u7684\u6570\u636e\u4e2d\u4e0d\u80fd\u6709\u7a7a\u767d\u7b26\u53f7\uff0c\u56e0\u4e3a\u7528scanf\u8f93\u5165\u65f6\u7a7a\u767d\u7b26\u53f7\u4f1a\u88ab\u5ffd\u7565\u3002
\u7a7a\u767d\u7b26\u53f7\u5305\u62ec\u7a7a\u683c(' ')\uff0c\u5236\u8868\u7b26('\t'),\u6362\u884c\u7b26('\n')\u7b49\u3002
2 \u6587\u4ef6\u4e2d\u88ab\u5206\u9694\u5f00\u7684\u6570\u636e\u7c7b\u578b\u662f\u4ee5\u4e00\u5b9a\u7684\u56fa\u5b9a\u89c4\u5f8b\u51fa\u73b0\u7684\u3002
\u4e3e\u51e0\u4e2a\u5178\u578b\u7684\u4f8b\u5b50\u4f9b\u7406\u89e3\u3002
\u4f8b\u4e00\uff1a
\u6240\u6709\u90fd\u662f\u90fd\u5728\u4e00\u884c\uff0c\u5747\u4e3aint\u578b\u4e14\u90fd\u7528\u9017\u53f7\u5206\u9694
\u6216\u8005\u5373\u4f7f\u6709\u6362\u884c\uff0c\u90a3\u4e48\u6362\u884c\u524d\u6700\u540e\u4e00\u4e2a\u6570\u636e\u540e\u9762\u4ecd\u6709\u9017\u53f7\u5206\u9694\u3002
\u4e5f\u5c31\u662f\u8bf4\uff0c\u4efb\u610f\u4e24\u4e2a\u6709\u6548\u6570\u636e\u4e4b\u95f4\u6709\u4e14\u53ea\u6709\u4e00\u4e2a\u9017\u53f7\u5206\u9694\u3002
\u90a3\u4e48\u53ef\u4ee5\u5faa\u73af\u8c03\u7528
scanf("%d,",&v);
\u6765\u4f9d\u6b21\u628a\u6570\u636e\u8bfb\u5230v\u4e2d\u5e76\u5904\u7406\u3002
\u4f8b\u4e8c\uff1a\u6587\u4ef6\u6709\u591a\u884c\uff0c\u6bcf\u884c\u4f9d\u6b21\u4e3aint, double,char\u7684\u683c\u5f0f\uff0c\u4e14\u6bcf\u884c\u7ed3\u5c3e\u7684\u6570\u636e\u540e\u9762\u6ca1\u6709\u9017\u53f7\u3002
\u53ef\u4ee5\u5b9a\u4e49
int a;
double b;
char c;
\u7136\u540e\u5faa\u73af\u8c03\u7528
scanf("%d,%lf,%c", &a,&b,&c);
\u518d\u5904\u7406a,b,c\u7684\u503c\u3002

\u4e8c\uff0c\u5faa\u73af\u8bfb\u5165\u5355\u4e2a\u5b57\u7b26\uff0c\u518d\u5904\u7406\u5b57\u7b26\u4e32\u3002
\u6b64\u79cd\u65b9\u6cd5\u9002\u7528\u4e8e\u8f93\u5165\u7684\u6570\u636e\u4e2d\u6709\u7a7a\u767d\u5b57\u7b26\u7684\u60c5\u51b5\uff0c\u8f83\u4e3a\u590d\u6742\u3002\u5173\u952e\u4ee3\u7801\u5165\u4e0b\uff1a
#include void read_file(FILE *fp)//fp \u4e3a\u6253\u5f00\u7684\u53ef\u8bfb\u6587\u4ef6\u7684\u6307\u9488{ char buf[100]; //\u5b9a\u4e49\u4e00\u4e2a\u8db3\u591f\u5927\u7684buf\uff0c\u5177\u4f53\u7a7a\u95f4\u4f9d\u5b9e\u9645\u5e94\u7528 int ret, i=0; while(1) { ret = fgetc(fp); if(ret == EOF || ret == ',')//\u8fd9\u91cc\u7ea6\u5b9a\u7ed3\u675f\u7684\u6807\u8bc6\uff0c\u5982\u679c\u6362\u884c\u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u7ed3\u675f\u6807\u8bc6\uff0c\u5219\u8fd9\u91cc\u53ef\u4ee5\u589e\u52a0||ret == '\n' { buf[i] = 0; printf("get value:%s\n",buf); //\u83b7\u53d6\u5230\u4e00\u4e2a\u5408\u6cd5\u6570\u636e\uff0c\u5982\u679c\u9700\u8981\u5904\u7406\u53ef\u4ee5\u5728\u8fd9\u91cc\u8fdb\u884c\u3002 i = 0;//\u4e3a\u4e0b\u4e00\u4e2a\u8f93\u5165\u505a\u51c6\u5907 } //else if();//\u8fd9\u91cc\u4e0d\u505a\u4efb\u4f55\u4e8b\u3002\u5982\u679c\u6709\u4ec0\u4e48\u9700\u8981\u5ffd\u7565\u7684\u5b57\u7b26\uff0c\u53ef\u4ee5\u52a0\u5728\u8fd9\u4e00\u884c\uff0c\u6bd4\u5982\u5ffd\u7565\u6362\u884c\uff0c\u53ef\u4ee5\u52a0else if(ret == '\n'); else buf[i]++=ret; if(ret == EOF)break;//\u5230\u6587\u4ef6\u7ed3\u5c3e\u9000\u51fa\u3002 }}

\u4e0d\u80fd\u7528\u7a7a\u683c\u4f5c\u5206\u9694\u7b26\uff0c\u8fd9\u6837\u4e00\u5b9a\u4f1a\u51fa\u9519\u3002
\u53ef\u4ee5\u7528\u9017\u53f7\u5206\u5f00\u7684\uff0cSplit\u4e0d\u80fd\u4f5c\u4e3a\u62c6\u5206\u4ee5\u7a7a\u683c\u4f5c\u4e3a\u5206\u9694\u7b26\u7684\u5b57\u7b26\u4e32\u3002
sj = MSComm1.Input
A() = Split(sj, ",")
\u73b0\u5728A(0)\u662f+3.28742752E+01\uff0cA(1)\u662f+0.000\uff0cA(2)\u662f+00000\uff0cA(3)\u662f101\uff0cA(4)\u662f+3.32506905E+01\uff0cA(4)\u662f+0.044\uff0cA(5)\u662f+00001\uff0cA(6)\u662f102\uff08\u5982\u679c\u52a0\u4e0a\u540e\u9762\u76841\uff0cA(6)\u662f102 1\uff09
\u4e3e\u4e00\u4e2a\u7a7a\u683c\u5206\u5f00\u7684\u4f8b\u5b50\uff1a
Dim a() As String
a = Split("a b c", " ")
For i = 1 To UBound(a)
Print a(i)
Next i
\u4e0a\u9762\u7684\u4ee3\u7801\u662f\u8d1f\u8d23\u628a\u201ca b c\u201d\u7528\u7a7a\u683c\u5206\u5f00\u7684\u5b57\u7b26\u4e32\u8d4b\u503c\u7ed9a\u6570\u7ec4\uff0c\u7136\u540e\u8f93\u51faa\u7684\u6240\u6709\u5143\u7d20\u503c\u7684\uff0c\u770b\u8d77\u6765\u6ca1\u6709\u4efb\u4f55\u9519\u8bef\u3002\u4f46\u662f\u80af\u5b9a\u51fa\u73b0\u4e0b\u6807\u8d8a\u754c\u7684\u9519\u8bef\uff0c\u56e0\u4e3a\u4e0d\u80fd\u7528\u7a7a\u683c\u4f5c\u4e3a\u5206\u9694\u7b26\uff0c\u4e00\u5b9a\u8981\u8bb0\u4f4f\uff01

用数组呗。我是用VB6的,不过你会.NET也肯定能看懂。
不是文本文件么?先用Line Input读每行存入数组。再把每行数据用你的","分割,就可以查询了。我写个简单的例子:

'搜索函数,用法Search(标头,序号),返回数据.
Private Function Search(ByVal Section As String, ByVal Index As Integer) As String
Dim fNum%, Lines%, temp%, Str As String
ReDim Data(0)
fNum = FreeFile()
If Dir("C:\1.txt") = "" Then Exit Function '文件路径和文件名你自己改
Open "C:\1.txt" For Input As #fNum
Do While Not EOF(fNum)
Lines = Lines + 1 '行数
Line Input #fNum, Str
ReDim Preserve Data(Lines)
Data(Lines) = Str
Loop
Close #fNum
If Lines > 0 Then
Dim tmp() As String
For temp = 1 To UBound(Data)
tmp = Split(Data(temp), ",") '分割
If tmp(0) = Section Then
Search = tmp(Index - 1) '因为从0开始所以-1
Exit Function
End If
Next
End If
End Function

比如你要“gc“开头的第5个数据,就用Search("gc",5)即可返回45。

mid()函数可以帮你
Mid(string,start,length)

string类型变量str="123456"
mid(str,2,1)的意思是在str字符串中从第2个字符开始取得一个字符,值为2

VB.NET没办法实行动态取值,取一个值必须是静态的,或者静态+公式取值。比如说需要取什么值,或者取哪个字开始的。
动态取值都会有条件的,按照你的条件来定义取哪个值才可以啊。
就好比如说:我要做一样东西,但是我没说清楚,所以你不知道怎么做。其实VB.NET也是一样的。你必须告诉他按照什么规矩去取值,才能得到你想要的值

给你一个自定义函数,调用很简单。
例:你要gc开头的第4个数据,则
MsgBox GetMsg("gc",4)
返回值是:15000

Function GetMsg(Title As String, Index As Integer) As String
Dim FileName As String, s As String, a() As Byte, b() As String, c() As String
Dim i As Integer, j As Integer, Fn As Integer
Fn = FreeFile
FileName = App.Path & "\1.txt" '请根据实际修改
If Dir(FileName) = "" Then Exit Function
ReDim a(FileLen(FileName))
Open FileName For Binary As #Fn
Get #Fn, , a
Close #Fn
s = StrConv(a, vbUnicode)
b = Split(s, vbNewLine)
Erase a
s = ""
For i = 0 To UBound(b)
c = Split(b(i), ",") '分隔符,这里是大写逗号,请根据实际修改
If c(0) = Title Then
If UBound(c) >= Index Then
GetMsg = c(Index - 1)
Exit Function
End If
End If
DoEvents
Next

End Function

很简单的

  • VB.net涓换浣曟彁鍙栨枃鏈枃浠涓殑閫楀彿鍒嗘牸鏁版嵁?
    绛旓細鐢ㄦ暟缁勫憲銆傛垜鏄敤VB6鐨勶紝涓嶈繃浣犱細.NET涔熻偗瀹氳兘鐪嬫噦銆備笉鏄鏂囨湰鏂囦欢涔堬紵鍏堢敤Line Input璇绘瘡琛屽瓨鍏ユ暟缁勩傚啀鎶婃瘡琛屾暟鎹敤浣犵殑"锛"鍒嗗壊锛屽氨鍙互鏌ヨ浜嗐傛垜鍐欎釜绠鍗曠殑渚嬪瓙锛'鎼滅储鍑芥暟锛岀敤娉昐earch(鏍囧ご锛屽簭鍙)锛岃繑鍥炴暟鎹.Private Function Search(ByVal Section As String, ByVal Index As Integer) As ...
  • VB.net涓换浣曟彁鍙栨枃鏈枃浠涓殑閫楀彿鍒嗘牸鏁版嵁?
    绛旓細鐢ㄦ暟缁勫憲銆傛垜鏄敤VB6鐨勶紝涓嶈繃浣犱細.NET涔熻偗瀹氳兘鐪嬫噦銆備笉鏄鏂囨湰鏂囦欢涔堬紵鍏堢敤Line Input璇绘瘡琛屽瓨鍏ユ暟缁勩傚啀鎶婃瘡琛屾暟鎹敤浣犵殑"锛"鍒嗗壊锛屽氨鍙互鏌ヨ浜嗐傛垜鍐欎釜绠鍗曠殑渚嬪瓙锛'鎼滅储鍑芥暟锛岀敤娉昐earch(鏍囧ご锛屽簭鍙)锛岃繑鍥炴暟鎹.Private Function Search(ByVal Section As String, ByVal Index As Integer) As ...
  • vb.net涓濡備綍涓娆℃ц鍙栦竴涓洰褰曚腑鐨勫涓鏂囨湰鏂囦欢鐨勫唴瀹瑰啓鍏ユ暟鎹簱...
    绛旓細1銆佸浣曚竴娆℃ц鍙栦竴涓湰鍦扮洰褰曚笅鑻ュ共涓猅XT鏂囨湰鐨鍐呭(鏈澶氳兘鏀惧灏戜釜txt鏂囦欢鏉ヨ鍙)銆傛瘡涓涓猅XT鏂囨湰鐨勫唴瀹规垜鍙槸闇瑕佹憳鍙栦竴閮ㄥ垎(鎴戜篃鍦ㄥ涔犳鍒欒〃杈惧紡鏉鑾峰彇閲岄潰鐨勫唴瀹)杩欎釜鍙互涓嶆槸閲嶇偣銆2銆佹垜甯屾湜灏嗘瘡涓猅XT鏂囦欢璇诲彇鍑烘潵鐨勬暟鎹瓨鍌ㄥ埌鏁版嵁搴撲腑銆備緥濡:浠婂ぉ鈥滄槦鏈熷嚑鈥."澶╂皵",涔嬬被鐨勬枃瀛,涔熸湁鍑犱釜鏁板瓧绛夈傛瘡涓枃浠...
  • 鎬庢牱鐢vb.net璇诲彇鏈湴.txt鏂囦欢?
    绛旓細imports System.IO 璇诲彇鎸囧畾鏂囦欢 ''璇诲彇鎸囧畾鏂囨湰鏂囦欢 Public Function readtext(ByVal path As String)If path = "" Then readtext = "鎿嶄綔澶辫触锛"Exit Function End If Try If File.Exists(path) = True Then Dim fs As New FileStream(path, FileMode.Open)Dim sr As New StreamReader(fs)D...
  • VB.net 璇诲彇鏂囨湰鏂囦欢?
    绛旓細1銆佸疄鐜颁笂浼犳寜閽柟娉曚唬鐮併2銆佸垽鏂浘鐗囧璞℃槸鍚︿负绌轰唬鐮併3銆佸彇寰楁暟鎹簱瀛楁 dt.Rows(0)("Pic")鏂规硶浠g爜銆4銆佸瓧鑺傛暟缁勮浆鎹负Image绫诲瀷鏂规硶浠g爜銆5銆佸鐞哠QL涓搷浣淚mage绫诲瀷鏂规硶浠g爜銆6銆佸疄鐜扮殑涓婁紶缁撴灉銆
  • VB.net绐椾綋璁捐涓,濡備綍璇诲彇.txt鏂囦欢涓殑鏁版嵁?
    绛旓細1銆佹柊寤轰竴涓爣鍑鐨刅B EXE宸ョ▼锛屽彧鏈変竴涓狥orm锛孎orm涓婃湁涓や釜鎸夐挳锛欳ommand1鍜孋ommand2銆2銆佸弻鍑籆ommand1娣诲姞濡備笅浠g爜 Private Sub Command1_Click()  Dim strFile     As String   Dim intFile     As Integer   Dim strData  &#...
  • vb.net鎬庝箞瀹炵幇璇诲彇鎸囧畾WORD鏂囨。涓殑鍐呭
    绛旓細娣诲姞spire.doc.dll涓哄紩鐢紝鍦vb.net涓璇诲彇鎸囧畾word鏂囨。鐨勫唴瀹瑰埌 txt鏂囦欢锛屼唬鐮佺ず渚嬪涓嬶細'鍔犺浇Word鏂囨。 Dim doc As Document = New Documentdocument.LoadFromFile("娴嬭瘯鏂囨。.docx")'浣跨敤GetText鏂规硶鑾峰彇鏂囨。涓殑鎵鏈鏂囨湰 Dim s As String = doc.GetText File.WriteAllText("鏂囨湰1.txt", s.ToString)...
  • VB.net 璇诲彇鏂囨湰鏂囦欢
    绛旓細Imports System.IOPublic Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim sr As New StreamReader("d:\test.csv") Dim arr1(), arr2(), arr3(), arr4() As Integer Dim a1, a2, a3, a4 As New ArrayList...
  • vb.net 璇诲彇鏂囦欢
    绛旓細涓琛屼竴琛岃鍙鏂囨湰鏂囦欢鐨渚嬪瓙锛欼mports System.IO Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim r As New StreamReader(Application.StartupPath & "\ABC.txt", System.Text.Encoding.Default) '鐢⊿tream...
  • 璇锋暀鍦VB.net涓濡備綍灏嗘暟鎹啓鍏xt鏂囦欢銆佸啀浠巘xt鏂囦欢璇诲嚭?
    绛旓細VB.net涓璇诲啓鏂囦欢涓昏浣跨敤System.IO鍛藉悕绌洪棿銆傗憼 浣跨敤 File.ReadAllText 璇诲彇 Dim s As String = System.IO.File.ReadAllText("C:\a.txt")鈶 浣跨敤 StreamReader 璇诲彇锛屾敞鎰忕紪鐮佹牸寮忓拰鍐欏叆鐨勭紪鐮佷繚鎸佷竴鑷淬侱im sr As StreamReader = New StreamReader("C:\a.txt", System.Text.Encoding.UTF8)Di...
  • 扩展阅读:免费把文字变成音频 ... 免费自动写文章软件 ... 免费文案自动生成app ... 免费把图片转换成文字 ... ai智能写作一键生成 ... 一键生成聊天记录 ... 免费一键生成转账截图 ... 聊天对话生成器免费无水印 ... 微信100%恢复聊天记录 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网