Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Text 如何将文本块拆分为每行仅显示一个单词_Text_Visual Studio 2012_Ms Word - Fatal编程技术网

Text 如何将文本块拆分为每行仅显示一个单词

Text 如何将文本块拆分为每行仅显示一个单词,text,visual-studio-2012,ms-word,Text,Visual Studio 2012,Ms Word,我正在将较长的格式文本导入Unity程序。我需要一个较长的文本字显示在每一行。。。 谢谢在Word中处理大文本块的问题是,像查找和替换这样的操作只能在查找255个字符或更少的文本字符串时执行,而不会导致错误。导入文本并将其分配给字符串变量后,可以使用Len()确定字符串的长度,然后使用Left()Mid()和Right()将较大的字符串拆分为每个250个字符的较短的块。以下是我为查找和替换情况编写的一些代码: With Selection.Find y = Len(Selection.T

我正在将较长的格式文本导入Unity程序。我需要一个较长的文本字显示在每一行。。。
谢谢

在Word中处理大文本块的问题是,像查找和替换这样的操作只能在查找255个字符或更少的文本字符串时执行,而不会导致错误。导入文本并将其分配给字符串变量后,可以使用Len()确定字符串的长度,然后使用Left()Mid()和Right()将较大的字符串拆分为每个250个字符的较短的块。以下是我为查找和替换情况编写的一些代码:

With Selection.Find
    y = Len(Selection.Text)
    Select Case y          
        Case Is <= 250
            x = 1
            .Text = stFound
            .Execute Replace:=wdReplaceAll    
         Case Is <= 500
             Dim stFound2 As String      
              x = 2
              z = Len(stFound) - 250
              stFound1 = Left(stFound, 250)
              stFound2 = Right(stFound, z)
         Case Is <= 750
              Dim stFound2 As String
              Dim stFound3 As String
              x = 3
              stFound1 = Left(stFound, 250)
              stFound2 = Mid(stFound, 251, 249)
              stFound3 = Right(stFound, Len(stFound) - 500)
    End Select
End With

经过进一步研究,我确定255个字符的文本字符串限制只影响某些函数,而不是所有函数。因此,我获取了一个17335个字符(包括空格)的Word文档,并对其运行Split()来创建一个数组。没有错误,结果数组的UBound值为2690


所以下一个问题是什么样的文本被导入Word,它的大小是多少。它只是一个由空格分隔的单词列表,还是另一个分隔符?它有标点符号吗?如果只是由空格或其他分隔符(如逗号或分号)分隔的单词列表,则Split()函数会将这些单词排序为一个数组,至少多达17000个字符。更大的文本块需要更多的测试。如果文本包含标点符号,则必须处理文本以删除不需要的标点符号,这可以通过通配符查找和替换来完成,只要查找字符串是您尝试使用的语言?Java?@Brandon其实并不重要,如果工作流很简单的话。我必须在Unity3D中以.txt文件的形式输出。如果我可以轻松地从浏览器/Word/Visual Studio运行。。谢谢@Bentoon允许的最大行长是多少?«在Word中处理大文本块的问题是,只能对长度小于255个字符的文本字符串执行操作,而不会导致错误»严格来说,这是不正确的。例如,使用“^13[!^13]@^13”进行通配符查找时,将查找500字或更多(即远远超过3000个字符)的段落分隔符,然后查找其他内容,然后再查找另一个段落分隔符。如果您将这些500字或更多的段分隔为字符串,并尝试执行查找和替换操作,您将得到一个下标超出范围的错误。您确实应该花更多的时间来理解Word的工作原理。查找/替换也可以在该范围内完成-您只需知道自己在做什么,并将查找表达式(而不是查找范围)保持在256个字符以下。您误解了我的意思,基本上同意我的意见。保存要搜索的文本的字符串文本或字符串变量必须不超过255个字符。我从来没有说过这适用于被搜索的范围。我所说的是,如果用作查找项的字符串大于255个字符,则执行查找和替换将返回下标超出范围的错误。
Dim stTxt as String
dim stWord as String
dim stArr() as String
dim x as long
stTxt = 'One of your text strings

stArr() = Split(stTxt)

For x = LBound(stArr()) to UBound(stArr())
    stWord = stArr(x) & "^p"
    Selection.Typetext stWord
Next
For x = LBound(stArr()) to UBound(stArr())
    stWord = stArr(x) & "^p"
    Selection.Typetext stWord
Next