2016-06-02 2 views
0

이전에 질문을 받았지만 코드가 작동하지 않습니다.Check String Only Characters 포함

senario는 문자열에 문자, 숫자 및 공백 만 포함되어 있는지 확인해야합니다. 그것이 다른 것을 포함한다면 나는 실패 할 필요가있다.

RegEx 메서드를 사용해 보았지만 정규식을 이해할 수 없어 LINQ 메서드를 사용하여 평가를 수행해야합니다.

if (!CSVItemArray[count].All(Char.IsLetterOrDigit) && !CSVItemArray[count].Contains(" ")) 
{ 
    return false; 
} 
+0

'CSVItemArray'는 문자열의 배열입니까? – ChrisF

+0

@ChrisF 예, 그렇습니다. – Smithy

+0

* 그래서 평가를 위해 LINQ 메서드를 사용해야합니다. LINQ는 문자 유형을 확인하는 것과 어떤 관계가 있습니까? – sstan

답변

1

다음 반환 trueCSVItemArray[count]에서 문자열은 문자, 숫자 및 공백이 포함 된 경우. 특히 당신이하고 싶은 것이 쉽게 정규식을 사용하여 얻을 수 있다면.

이 당신이 단순히이를 사용할 수 있습니다 말해 두 겠는데 :

Regex r = new Regex("^[A-Za-z0-9\\s]*$"); 
var valid = r.IsMatch(myString); 

이 대문자 또는 소문자, 숫자 및 공백 문자의 번호를 확인합니다. 시퀀스 자체는 []에 포함되어 있으며, 다음은 *입니다. 문자열이 시퀀스에서 발생할 수있는 횟수를 설정합니다 (어떤 경우에서도 무한대로 반복 할 수 없음). ^$은 문자열 repsectivly의 시작과 끝을 표시하기위한 것입니다. 이렇게하면 %asdfgh12345 //이 일치하는 것을 피할 수 있습니다.

편집 : Umlauts도 필요하면 (ä, ö, ü, ß, ...) 특수 문자도 처리하는 this post을보십시오.

+0

좋은 지적. Thoug 당신의 정규식에는 äöüß와 그 편지가 포함되어 있지 않습니다. 그러나 OP는 그에게 편지를 보내는 이유를 구체적으로 밝히지 않았다. –

+0

@ RenéVogt 공정한 점, 업데이트를 추가했습니다. – HimBromBeere

+0

@HimBromBeere _ "이해가 안되기 때문에 무언가를하는 것은 나쁜 일입니다."_ 나는 그것에 동의합니다. Regex가 어떻게 작동 하는지를 배우게 될 것입니다. 그러나 평가에서 그것을 사용한다면, 내가하고있는 일을 설명해야 할 것입니다. 그리고 가정교사는 그것을 가르쳐주지 않았기 때문에 잘되지 않을 것입니다. – Smithy

3

는 그냥 All 쿼리에 문자, 숫자 또는 공백에 대한 검사를 결합 :

if (!CSVItemArray[count].All(c => Char.IsLetterOrDigit(c) || Char.IsWhiteSpace(c))) 
{ 
    return false; 
} 
2

당신의 논리가 조금 혼란이다

여기 내 코드입니다. 적어도 개발자 - 그것은 나쁜 일이 이해하지 못하는 때문에 (예를 들어, 정규식을 사용하여) 뭔가를하고

return CSVItemArray[count].All(c => Char.IsLetterOrDigit(c) || Char.IsWhiteSpace(c)); 
+0

부울 검증 함수입니다. 조건을 충족시키지 못하면 false를 반환합니다. – Smithy

+0

@Smithy 그렇습니다. "글자, 숫자 및 공백 만"_이 포함되어 있으면 true를 반환하므로 다른 값이 있으면 폴트를 반환합니다. 이 코드는 문자열 안의 _'All'_ 문자가 문자, 숫자 또는 공백인지 검사합니다. –