VB.net字符串连接,添加不需要的空间

时间:2014-07-10 02:27:13

标签: vb.net string catia

在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

我应该对我加入字符串的方式做些什么修改?

谢谢!

2 个答案:

答案 0 :(得分:0)

意识到我的评论没有完全回答你的问题,所以有一些事情:

  1. String.Replace方法并不像您认为的那样有效。说count.Replace(" ", "")实际上并没有改变变量count;该函数实际上返回一个新字符串。为了让它按照您的意愿工作,您需要count = count.Replace(" ", "")

  2. 考虑使用StringBuilder而不是将一堆字符串连接在一起。它将大大提高性能。使用StringBuilder课程时,只需拨打StreamWriter

  3. ,您也不需要写到sw.Write(stringBuilderObject.ToString())直到最后。
  4. 我暂时没有使用VB.NET,但我会查看Str(i)返回的内容。不要使用VB函数,而是考虑使用count = i.ToString()来使用.NET函数。根据Sky的说法,Str函数确实返回了一个空间,因为它保留了负号。基于此,我将使用.ToString()方法。

答案 1 :(得分:0)

我在评论中迅速采访时,Str功能为标志预留了空间,因为它是正数,没有任何标志,如果是负数,那里会有减号。请尝试使用Trim(Str(i))

从上面链接(强调我的):

  

此示例使用Str函数返回数字的String表示形式。当正数转换为字符串时,前导空格始终为其符号保留。