문자열이 단일 단어인지 확인하는 방법은 무엇입니까?문자열이 단일 단어인지 확인하는 방법은 무엇입니까?
이렇게하는 것이 옳은가요?
set st "some string"
if { [llength $st] != 1 } {
puts "error"
}
문자열이 단일 단어인지 확인하는 방법은 무엇입니까?문자열이 단일 단어인지 확인하는 방법은 무엇입니까?
이렇게하는 것이 옳은가요?
set st "some string"
if { [llength $st] != 1 } {
puts "error"
}
답변은 단어에 알파벳 문자 만 포함되어 있다는 가정하에 작성되었습니다. 당신이 어떤 정규 표현식을 사용하여 괜찮다면
, 당신은이를 사용할 수 있습니다
set st "some string"
if { ![regexp {^[A-Za-z]+$} $st] } {
puts "error"
}
[정규 표현식 표현 문자열] 0을 반환이 일치하지 않으며 1은 일치하는 항목이있는 경우.
내가 사용하는 표현식은 ^[A-Za-z]+$
입니다. 이는 문자열이 문자로 시작하고 임의의 수의 문자를 포함 할 수 있으며 문자로 끝나야 함을 의미합니다. 지금 후행 공백을 걱정하는 경우
^[A-Za-z-]+$
, 내가 먼저 트리밍 제안 : 당신이 내 대시를 포함 할 경우, 문자 클래스에 추가 (예를 들어, 하나 개의 단어가 공동 운영) 직접 정규 표현식 ...
set st " some string "
if { ![regexp {^\s*[A-Za-z]+\s*$} $st] } {
puts "error"
}
편집을 사용하려는 경우
set st " some string "
if { ![regexp {^[A-Za-z]+$} [string trim $st]] } {
puts "error"
}
나 : 정규 표현식에 전달하기 전에 단어는 strin으로 간주하는 경우 g를 제외하고는 다른 것을 할 수 있습니다 : 문자열에 공백이 있는지 확인하십시오. 이 공간을 발견하면
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
_
및 (임의의 조합). 단어에 특수 문자가 있으면 작동하지 않습니다.
catch {set oneWord 0;set oneWord [expr {[llength $string] == 0}]}
단어의 은 Tcl 언어 정의입니다 : 문자열을 사용하여 하나 개의 단어 인 경우
이 경우, 단어를 분리하는 데 사용되는 공백 문자 인 '\ s'를 검색하십시오. . –
은 하나의 가능한 정의에 따르면, 당신은 확인합니다.
# -strict excludes the empty string (normally included for historic reasons)
set oneWord [string is alnum -strict $string]
한 단어의 당신의 정의는 무엇인가 : 원하는 정의 경우 반면에
는 다음과 같은 다른 가능성을 가지고 "숫자이다"? 편지는 처음부터 끝까지?한 단어에 대시 (하이픈)를 포함 시키려면 공백을 확인할 수 있지만 '단어'에 대해 좀 더 정교해질 필요가 있다고 생각합니다. – Jerry
문자열을 확인하고 싶습니다. 정확히 한 단어를 포함하고 있습니다 : 그 안에 어떤 문자 (공백 제외). –
좋아요, 그래서 123 %를 "IHDS"라고 기록 할 것입니다. 내 대답을 업데이트했습니다 :) – Jerry