2017-01-07 2 views
-1

Ich habe eine Variable, die wie unter String-Wert enthält:Validate Variable enthält String-Wert

var stringWithSpecialChar = "/Home%"; 

Manchmal wird diese Variable keinen Wert wie unten enthält:

var stringWithSpecialChar = "/%"; 

Ich habe hier zu prüfen, ob Diese Variable enthält einen String-Wert oder nicht. Jedes Mal, wenn sich der Zeichenfolgenwert ändert, ist es nicht sicher, ob ich den gleichen Wert ein anderes Mal erhalten werde.

+0

Haben Sie erfassen müssen, was in ist zwischen „/“ und „%“? –

+0

Was ist Ihre Definition von * einem gültigen Wert *? –

Antwort

1

Ich kann nicht verstehen, was in Ihrer Frage ein gültiger Wert ist, so:
Verwenden Sie den folgenden Code, wenn ein gültiger Wert ein Wert von einigen Buchstaben oder Ziffern ist:

using System.Linq; 

if (str.Any(char.IsLetterOrDigit) 
{ 
    //Some codes 
} 

Aber ich Ihnen empfehlen ; für eine gültige oder ungültige Zeichenfolge Verwendung Regex wie diese Überprüfung:

using System.Text.RegularExpressions; 

var regex = new Regex(@"[A-Za-z]"); // You have many options here 
if (regex.IsMatch(str)) 
{ 
    //Some codes 
} 
+0

Sha, hat Ihr Vorschlag für mich gearbeitet. Ich erhebe Ihre Antwort. Regex ist in Ordnung für mich. – Vikash

+0

Gern geschehen;). –

1

Sie können dies tun, machen Sie eine foreach-Schleife auf Ihre Variable, um zu überprüfen, ob es eine Zeichenfolge oder einen Buchstaben sehen wird.

var stringWithSpecialChar = "/Home%"; 
bool blStringInput; 
blStringInput = IsThisString(stringWithSpecialChar); 

Methode zu überprüfen, ob es einen String-Wert sehen:

public static bool IsThisString(string strInput) 
    { 
     foreach (char c in strInput) 
     { 
      if (char.IsLetter(c)) 
       return true; 
     } 

     return false; 
    } 
+0

Nun, das wird false zurückgeben, wenn es ein Nicht-Buchstabe-Zeichen in einer Zeichenfolge erkennt :) –

+0

Misreading Ihren Code! - Mit LinQ: 'blStringInput = str.Any (char.IsLetter);';) –

+0

Das wird es auch tun;) @ shA.t –

0

Unten finden Sie eine einfache Implementierung des Problems ist. Ich habe gedacht, dass alles zwischen / und % eine Zeichenfolge [Es könnte Zahlen, Alphabete oder Sonderzeichen enthalten]. Außerdem habe ich eine Überprüfung innerhalb der Funktion eingefügt, ob die Zeichenfolge gültig ist oder nicht, indem überprüft wird, ob sie mit / bzw. % beginnt und endet.

using System; 
class MainClass { 
    public static void Main (string[] args) { 
    var stringWithSpecialChar = "/Home%"; 
    bool ans = checkIfStringIsPresent(stringWithSpecialChar); 
    Console.WriteLine(ans); 
    stringWithSpecialChar = "/%"; 
    ans = checkIfStringIsPresent(stringWithSpecialChar); 
    Console.WriteLine(ans); 
    stringWithSpecialChar = "/hi%"; 
    ans = checkIfStringIsPresent(stringWithSpecialChar); 
    Console.WriteLine(ans); 
    stringWithSpecialChar = "/12#%"; 
    ans = checkIfStringIsPresent(stringWithSpecialChar); 
    Console.WriteLine(ans); 
    } 
    public static bool checkIfStringIsPresent(string s){ 
    var len = s.Length; 
    if(s[0]!='/' || s[len-1]!='%') 
     return false; // if string doesn't start and and with correct symbols, then return false 
    var i = 0; 
    for(i=1;i<len-1;i++){ 
     return true; // something is present in between/and %, so return true 
    } 
    return false; // else return false 
    } 
} 

Ausgang:

True 
False 
True 
True 
0

Wenn Sie die Sonderzeichen kennen und wissen, dass sie am Anfang und am Ende des string sind, Trim() verwendet werden könnten:

var stringWithSpecialChar = "/Home%"; 
var value = stringWithSpecialChar.Trim('/', '%'); 

if(!string.IsNullOrEmpty(value)) 
    // Use value... 

One könnte auch string.IsNullOrWhiteSpace(value) im Zustand abhängig von Ihren Bedürfnissen verwenden.

Verwandte Themen