String 使用空字符串连接将引发错误:无效DIM

String 使用空字符串连接将引发错误:无效DIM,string,string-concatenation,ti-basic,String,String Concatenation,Ti Basic,在TI-BASIC中,+操作被重载以进行字符串连接(在这种情况下,如果没有其他情况的话,TI-BASIC将加入世界其他地方) 但是,任何涉及空字符串的连接尝试都会引发维度不匹配错误: "Fizz"+"Buzz" FizzBuzz "Fizz"+"" Error ""+"Buzz" Error ""+"" Error 为什么会发生这种情况,是否有一个优雅的解决方法?我一直在使用一个起始空格,并在必要时截断字符串(

在TI-BASIC中,
+
操作被重载以进行字符串连接(在这种情况下,如果没有其他情况的话,TI-BASIC将加入世界其他地方)

但是,任何涉及空字符串的连接尝试都会引发维度不匹配错误:

"Fizz"+"Buzz"
        FizzBuzz 
"Fizz"+""
           Error
""+"Buzz"
           Error
""+""
           Error

为什么会发生这种情况,是否有一个优雅的解决方法?我一直在使用一个起始空格,并在必要时截断字符串(并不总是很好),或者使用循环一次添加一个字符(缓慢)

最好的方法取决于你在做什么

如果您有一个字符串(在本例中为Str1)需要与另一个字符串(Str2)连接,并且您不知道它是否为空,那么这是一个很好的通用案例解决方案:

Str2
If length(Str1
Str1+Str2
如果每次都需要循环并向字符串中添加内容,那么这是最好的解决方案:

Str2
If length(Str1
Str1+Str2
循环之前:

" →Str1
Str1+<stuff_that_isn't_an_empty_string>→Str1
sub(Str1,2,length(Str1)-1→Str1
在循环中:

" →Str1
Str1+<stuff_that_isn't_an_empty_string>→Str1
sub(Str1,2,length(Str1)-1→Str1
还有其他情况,如果您有特定情况,那么您应该发布相关代码的简化版本


希望这有帮助

非常不幸的是,TI Basic不支持空字符串。如果从空字符串开始并添加字符,则必须执行以下操作:

"?
For(I,1,3
Prompt Str1
Ans+Str1
End
sub(Ans,2,length(Ans)-1

另一个有用的技巧是,如果您有一个字符串,最终将使用
expr(
)进行计算,那么您可以执行
“(+Str1+”)”→Str1
然后自由搜索和替换字符串。这是一个必要的解决办法,因为您无法搜索和替换任何涉及字符串中第一个或最后一个字符的文本。

为什么需要连接空字符串?只需curious@Meepo例如,在编写FizzBuzz程序时,我可能希望在每个iter中保留一个字符串如果当前数字可被3整除,则添加“Fizz”,如果可被5整除,则添加“Buzz”。这涵盖了四种情况中的三种。此外,我可能希望在程序中使用未知字符串,如果它是空的,该怎么办?我认为ti basic以一种奇怪的方式处理空字符串(可能是为了节省内存),因此,如果您发布更多代码,我将很乐意帮助您找到解决此问题的方法