在python中,字符串是没有contains函数的,不过可以使用find来代替。现在有一串单词,有的相邻两个单词之间可能不止一个空格,现在我只想保留一个空格,使用下面的办法就是无效的,不知道为什么这样会出现死循环。我知道可以使用' '.join(a.split())来解决问题,但是下面的代码不知道为什么会出错,是我的思想错误,还是其他原因?在java等其他语言里面,使用这种思想可行么?
def StringUnderLine(str):
str.strip();
n=0;
while str.find(' '):
str.replace(' ',' ')
n=n+1
print(n,end='')
print(str,end='')
a="1 2 3 4 5 "
b="1 "
c=" 2"
d="abc def"
StringUnderLine(a)
StringUnderLine(b)
StringUnderLine(c)
StringUnderLine(d)
str.find(' ') は見つからない場合は -1 を返し、while ループは無限ループするために True なので、while -1 は無限ループします
リーリーstr.replace(' ', ' ') も有効にします。
すべき
str = str.replace(' ',' ');
JAVA、C# では、文字列変数自体は不変です。 つまり、置換しても元の文字列は変更されません。
まず話が逸れますが、Python に尋ねると、あなたは Python だけにラベルを付けるのはなぜでしょうか。
スペースの長さがわからない場合は、通常のマッチングを使用できます。私は Python を知りません。
調べてみたところ、すべてゼロではありませんでした。 Python の数字は true を表します。 str.find は一致するものを見つけられない場合は -1 を返し、見つかった場合は最初に一致した位置を返します。 したがって、これを条件として使用すると、これは正しいことになります。見つからない場合は true と同等になります。位置 0 で一致するものが見つかった場合は false と見なされます。そのため、str.find が一致するかどうかを確認したい場合は、!= -1
str は代入によって変更されていません。 replace は str
を直接変更するのではなく、新しい文字列を返します。