如何檢查該字符串是單個單詞?如何檢查字符串是單個單詞?
這是正確的方法嗎?
set st "some string"
if { [llength $st] != 1 } {
puts "error"
}
如何檢查該字符串是單個單詞?如何檢查字符串是單個單詞?
這是正確的方法嗎?
set st "some string"
if { [llength $st] != 1 } {
puts "error"
}
我的答案是基於一個字只包含字母字符的假設。如果沒有匹配,1是有匹配
set st "some string"
if { ![regexp {^[A-Za-z]+$} $st] } {
puts "error"
}
[正則表達式表達串]返回0:
如果你不介意使用正則表達式的一些,你可以用這個。
我使用的表達式是^[A-Za-z]+$
,表示字符串以字母開頭,可以包含任意數量的字母,並且必須以字母結尾。如果要包括內部的儀表板(如聯合運營是一個字),你在字符類添加:
^[A-Za-z-]+$
如果你現在擔心尾隨空格,我建議第一微調它它傳遞給正則表達式之前:
set st " some string "
if { ![regexp {^[A-Za-z]+$} [string trim $st]] } {
puts "error"
}
,或者如果您想直接使用正則表達式...
set st " some string "
if { ![regexp {^\s*[A-Za-z]+\s*$} $st] } {
puts "error"
}
編輯:如果一個字被視爲〜應變除空格以外的其他字符,可以執行其他操作:檢查字符串是否包含空格。
set st "some strings"
if { [regexp { } $st] } {
puts "error"
}
如果找到一個空間,正則表達式將返回1
regexp
提供了直接的方式,以配合\w
和\W
一個字。 \w
匹配一個單詞字符,而\W
匹配任何字符,除了一個單詞字符。
set st "some string"
if { [regexp {\W} $st] } {
puts "error"
}
然而\w
比賽僅digits
,alphabets
和_
(以任何組合)。如果您的文字中出現特殊字符,這將不起作用。
在這種情況下,搜索'\ s' - 一個空白字符,通常用於分割字詞。 –
根據一個可能的定義,你檢查一個字符串是否是一個字使用:
catch {set oneWord 0;set oneWord [expr {[llength $string] == 0}]}
這是一個字的Tcl語言定義。
在另一方面,如果您喜歡的定義是「是字母」那麼你有其他的可能性,如:
# -strict excludes the empty string (normally included for historic reasons)
set oneWord [string is alnum -strict $string]
什麼是你一個字的定義是什麼?只有字母從頭到尾?如果你想在一個單詞中包含破折號(連字符),你可以檢查空格,如果是的話,但我認爲你需要更詳細地描述什麼是'單詞':) – Jerry
我想檢查字符串只包含一個單詞:包含任何字符(空格除外)。 –
好吧,所以你會計算「123%?」IHDS「作爲一個單詞,我已經更新了我的答案:) – Jerry