在vb.net字符串中遇到一些问题,将两个字符串连接在一起以输出到txt文档。我的文本文档在我加入的两个字符串之间获得了额外的空间。这不应该发生。
If System.IO.File.Exists(path) = True Then
' Create a file to write to.
Dim sw As StreamWriter = System.IO.File.CreateText(path)
sw.WriteLine("Attribute VB_Name = " & Chr(34) & "KbTest" & Chr(34))
sw.WriteLine("")
sw.WriteLine("Public Sub DoKbTest()")
sw.WriteLine("'code here")
sw.WriteLine("Dim catia")
sw.WriteLine("set catia = GetObject(, " & Chr(34) & "CATIA.Application" & Chr(34) & ")")
sw.WriteLine("Dim partDocument1")
sw.WriteLine("Set partDocument1 = catia.ActiveDocument")
sw.WriteLine("Dim part1")
sw.WriteLine("Set part1 = partDocument1.Part")
sw.WriteLine("Dim hybridShapeFactory1")
sw.WriteLine("Set hybridShapeFactory1 = part1.HybridShapeFactory")
sw.WriteLine("Dim hybridShapeDirection1")
sw.WriteLine("Set hybridShapeDirection1 = hybridShapeFactory1.AddNewDirectionByCoord(1#, 2#, 3#)")
sw.WriteLine("Dim hybridBodies1")
sw.WriteLine("Set hybridBodies1 = part1.HybridBodies")
sw.WriteLine("Dim hybridBody1")
sw.WriteLine("Set hybridBody1 = hybridBodies1.Item(" & Chr(34) & "PointSetx" & Chr(34) & ")")
sw.WriteLine("dim skteches1")
sw.WriteLine("Set sketches1 = hybridBody1.HybridSketches")
sw.WriteLine("Dim sketch1")
sw.WriteLine("Set sketch1 = sketches1.Item(" & Chr(34) & "Sketch.1" & Chr(34) & ")")
sw.WriteLine("Dim reference1")
sw.WriteLine("Set reference1 = part1.CreateReferenceFromObject(sketch1)")
sw.WriteLine("Dim hybridShapeExtremum1")
sw.WriteLine("Set hybridShapeExtremum1 = hybridShapeFactory1.AddNewExtremum(reference1, hybridShapeDirection1, 1)")
sw.WriteLine("hybridBody1.AppendHybridShape hybridShapeExtremum1")
sw.WriteLine("Dim reference2")
Dim lessOneCount As String
Dim spacing As Double = 0
Dim count As String
Dim setString As String
'loop
这是增加额外空间的代码的一部分
For i = 1 To numbOfPoints Step 1
count = Str(i)
count.Replace(" ", "")
MsgBox(count)
If i < 2 Then
lessOneCount = "hybridShapeExtremum1"
Else
lessOneCount = "HybridShapePointOnCurve" + Str(i - 1)
End If
sw.WriteLine("reference2 = part1.CreateReferenceFromObject(" + lessOneCount + ")")
setString = "Dim hybridShapePointOnCurve" + count
sw.WriteLine(setString)
setString = "hybridShapePointOnCurve" + count + " = hybridShapeFactory1.AddNewPointOnCurveWithReferenceFromDistance(reference1, reference2, spacing, False)"
sw.WriteLine(setString)
setString = "hybridShapePointOnCurve" + count + ".DistanceType = 1"
sw.WriteLine(setString)
setString = "hybridBody1.AppendHybridShape(hybridShapePointOnCurve" + count + ")"
sw.WriteLine(setString)
Next
sw.WriteLine("End Sub")
sw.Flush()
sw.Close()
End If
示例输出: Dim hybridShapePointOnCurve 2
应该是: Dim hybridShapePointOnCurve2
我应该对我加入字符串的方式做些什么修改?
谢谢!
答案 0 :(得分:0)
意识到我的评论没有完全回答你的问题,所以有一些事情:
String.Replace
方法并不像您认为的那样有效。说count.Replace(" ", "")
实际上并没有改变变量count
;该函数实际上返回一个新字符串。为了让它按照您的意愿工作,您需要count = count.Replace(" ", "")
。
考虑使用StringBuilder
而不是将一堆字符串连接在一起。它将大大提高性能。使用StringBuilder
课程时,只需拨打StreamWriter
sw.Write(stringBuilderObject.ToString())
直到最后。
我暂时没有使用VB.NET,但我会查看Str(i)
返回的内容。不要使用VB函数,而是考虑使用count = i.ToString()
来使用.NET函数。根据Sky的说法,Str函数确实返回了一个空间,因为它保留了负号。基于此,我将使用.ToString()
方法。
答案 1 :(得分:0)
我在评论中迅速采访时,Str
功能为标志预留了空间,因为它是正数,没有任何标志,如果是负数,那里会有减号。请尝试使用Trim(Str(i))
从上面链接(强调我的):
此示例使用Str函数返回数字的String表示形式。当正数转换为字符串时,前导空格始终为其符号保留。