मैंने कंसोल से एक स्ट्रिंग पढ़ी। मैं कैसे सुनिश्चित करूं कि इसमें केवल अंग्रेज़ी वर्ण और अंक हों?मैं कैसे सत्यापित करूं कि एक स्ट्रिंग अंग्रेजी में है?
उत्तर
यह मानते हुए कि द्वारा "अंग्रेजी अक्षर" आप बस 26-चरित्र लैटिन वर्णमाला की बात कर रहे है, यह एक ऐसा क्षेत्र है किया जाएगा जहाँ मैं नियमित अभिव्यक्ति का प्रयोग करेंगे: ^[a-zA-Z0-9 ]*$
उदाहरण के लिए:
if(Regex.IsMatch(Console.ReadLine(), "^[a-zA-Z0-9]*$"))
{ /* your code */ }
इस मामले में नियमित अभिव्यक्तियों का लाभ यह है कि आप वास्तव में इस बात की परवाह करते हैं कि एक स्ट्रिंग पैटर्न से मेल खाती है या नहीं - यह वह जगह है जहां नियमित अभिव्यक्ति अद्भुत तरीके से काम करती है। यह स्पष्ट रूप से आपके इरादे को कैप्चर करता है, और यदि आप "अंग्रेजी वर्ण" की परिभाषा केवल 26 वर्णमाला से परे फैली हुई है तो विस्तार करना आसान है।
एक सभ्य series of articles here है जो नियमित अभिव्यक्तियों के बारे में अधिक पढ़ता है।
जोर्न शू-रोड का उत्तर यहां प्रस्तुत नियमित अभिव्यक्ति को आपके इनपुट से मेल खाने के तरीके के बारे में एक महान स्पष्टीकरण प्रदान करता है।
आप सफेद जगह भी शामिल कर सकते हैं; दिए गए रेगेक्स पैटर्न के लिए "ए बी सी" झूठा रिटर्न देता है। –
... और विराम चिह्न – Joe
और इलिप्सिस वर्ण (...) या घुंघराले apostrophes जैसे फैंसी विराम चिह्नों के बारे में क्या? इनके अपने स्वयं के यूनिकोड वर्ण हैं। –
आप इस नियमित अभिव्यक्ति के खिलाफ यह मेल खा सकते हैं: ^[a-zA-Z0-9]*$
^
स्ट्रिंग की शुरुआत से मेल खाता है कम या ऊपरी में (यानी कोई वर्ण इस बिंदु से पहले अनुमति दी जाती है)[a-zA-Z0-9]
मैचों az से किसी भी पत्र मामले, साथ ही 0-9 अंक*
पिछले मैच दोहराने शून्य या अधिक बार$
सेंट के अंत से मेल खाता है की सुविधा देता हैbool match = Regex.IsMatch(input, "^[a-zA-Z0-9]*$");
आप हैं: अंगूठी (यानी कोई वर्ण इस बिंदु के बाद अनुमति दी जाती है)
एक सी # कार्यक्रम में अभिव्यक्ति का उपयोग करने के लिए आपको System.Text.RegularExpressions
आयात और अपने कोड में कुछ इस तरह करने की आवश्यकता होगी
Regex pattern = new Regex("^[a-zA-Z0-9]*$", RegexOptions.Compiled);
for (int i = 0; i < 1000; i++)
{
string input = Console.ReadLine();
pattern.IsMatch(input);
}
ध्यान दें कि इनपुट स्ट्रिंग में कोई स्थान होने पर यह पैटर्न गलत लौटाएगा। –
bool AllAscii(string str)
{
return !str.Any(c => !Char.IsLetterOrDigit(c));
}
यह निर्धारित करने के लिए अच्छा है कि स्ट्रिंग में एक अवैध वर्ण है ... – IAbstract
IsLetterOrDigit किसी भी यूनिकोड अक्षर के लिए सच होगा। न केवल अंग्रेजी के लिए। क्या मैं सही हूँ? –
मेरे परीक्षण के अनुसार यह झूठा परिणाम है। –
कुछ इस तरह: पैटर्न के खिलाफ लाइनों का एक बहुत परीक्षण करने के लिए जा रहे हैं, तो आप अभिव्यक्ति संकलित करने के लिए चाहते हो सकता है (यदि आप इनपुट को नियंत्रित करना चाहते हैं):
static string ReadLettersAndDigits() {
StringBuilder sb = new StringBuilder();
ConsoleKeyInfo keyInfo;
while ((keyInfo = Console.ReadKey(true)).Key != ConsoleKey.Enter) {
char c = char.ToLower(keyInfo.KeyChar);
if (('a' <= c && c <= 'z') || char.IsDigit(c)) {
sb.Append(keyInfo.KeyChar);
Console.Write(c);
}
}
return sb.ToString();
}
क्या आपके पास वेब एक्सेस है? मुझे लगता है कि इसकी गारंटी नहीं दी जा सकती है, लेकिन Google की एक भाषा एपीआई है जो आपके द्वारा पास की जाने वाली भाषा का पता लगाएगी। google language api
तो मुझे नहीं चाहता हूँ रेगुलर एक्सप्रेशन से उपयोग करने के लिए, और सिर्फ एक वैकल्पिक समाधान प्रदान करने के लिए, आप बस हर किरदार के लिए ASCII कोड की जांच कर सकते हैं और यह है कि सीमा के बीच स्थित है, यह या तो एक अंग्रेज़ी पत्र या एक नंबर होगा (यह सबसे अच्छा समाधान नहीं हो सकता है):
foreach (char ch in str.ToCharArray())
{
int x = (int)char;
if (x >= 63 and x <= 126)
{
//this is english letter, i.e.- A, B, C, a, b, c...
}
else if(x >= 48 and x <= 57)
{
//this is number
}
else
{
//this is something diffrent
}
}
पूर्ण ASCII तालिका के लिए http://en.wikipedia.org/wiki/ASCII।
लेकिन मुझे अभी भी लगता है, RegEx सबसे अच्छा समाधान है।
यह गलत जवाब गलती से ASCII को "अंग्रेज़ी" के साथ conflates। – tchrist
मैं नियमित अभिव्यक्ति उत्तरों से सहमत हूं। हालांकि, आप इसे "^ [\ w] + $" तक सरल बना सकते हैं। \ w कोई भी "शब्द चरित्र" (जो एक गैर-यूनिकोड वर्णमाला का उपयोग करता है] का अनुवाद करता है। मुझे नहीं पता कि आप अंडरस्कोर भी चाहते हैं।
में regexes पर अधिक यहाँ .net:। http://msdn.microsoft.com/en-us/library/ms972966.aspx#regexnet_topic8
bool onlyEnglishCharacters = !EnglishText.Any(a => a > '~');
सस्ता लगता है, लेकिन यह मेरे लिए काम किया, कानूनी आसान जवाब आशा है कि किसी को भी यह मदद करता है
'एनयूएल', 'बीईएल' और अन्य कम अंत ASCII वर्ण सभी" ~ "से कम हैं - जो इसे होने की अपेक्षा अधिक भंगुर बनाता है।एक '|| जोड़ें एक <'0'' और आप समाधान के करीब होंगे :-) –
के रूप में कई ने कहा, स्वीकार किए जाते हैं जवाब ही काम करता है अगर वहाँ एक शब्द है। स्ट्रिंग में। ऐसे कोई जवाब नहीं हैं जो स्ट्रिंग में कई शब्दों या यहां तक कि वाक्यों के मामले को कवर करते हैं, यहां कोड है:
stringToCheck.Any(x=> char.IsLetter(x) && !((int)x >= 63 && (int)x <= 126));
एक और तरीका यह जांचना है कि IsLower और IsUpper दोनों सही नहीं हैं या नहीं। कुछ की तरह:
private bool IsAllCharEnglish(string Input)
{
foreach (var item in Input.ToCharArray())
{
if (!char.IsLower(item) && !char.IsUpper(item) && !char.IsDigit(item) && !char.IsWhiteSpace(item))
{
return false;
}
}
return true;
}
और उपयोग के लिए यह:
string str = "فارسی abc";
IsAllCharEnglish(str); // return false
str = "These are english 123";
IsAllCharEnglish(str); // return true
<?php
$string="हिन्दी";
$string="Manvendra Rajpurohit";
echo strlen($string); echo '<br>';
echo mb_strlen($string, 'utf-8');
echo '<br>';
if(strlen($string) != mb_strlen($string, 'utf-8'))
{
echo "Please enter English words only:(";
}
else {
echo "OK, English Detected!";
}
?>
इस सरल चाल का प्रयास करें और मुझे यकीन है कि आप इसका आनंद लेंगे .. –
- 1. जावास्क्रिप्ट रेगेक्स में, मैं कैसे सत्यापित करूं कि एक स्ट्रिंग एक वैध हेक्साडेसिमल रंग है?
- 2. मैं कैसे सत्यापित करूं कि एनएसडीटा एक पीडीएफ है?
- 3. मैं कैसे सत्यापित करूं कि सेलेनियम 2
- 4. आईओएस: सत्यापित करें कि कोई स्ट्रिंग एक खाली स्ट्रिंग है
- 5. मैं रेल में दिनांक कैसे सत्यापित करूं?
- 6. मैं अजगर में एक एसएसएल प्रमाणपत्र कैसे सत्यापित करूं?
- 7. यह सत्यापित करने के लिए कि एक स्ट्रिंग में सी #
- 8. मैं कैसे सत्यापित करूं कि एक एंड्रॉइड एपीके रिलीज प्रमाणपत्र के साथ हस्ताक्षरित है?
- 9. कैसे निर्धारित करें कि एक गैर-अंग्रेजी स्ट्रिंग ऊपरी मामले में है या नहीं?
- 10. मैं कैसे सत्यापित करूं कि दो मान रेल मॉडल में एक दूसरे के बराबर नहीं हैं?
- 11. मैं कैसे सत्यापित करूं कि अपेक्षित सरणी एमएसटीएस्ट में वास्तविक सरणी है?
- 12. मैं एआरसी मोड में संदर्भ गणना कैसे सत्यापित करूं?
- 13. मैं कैसे सत्यापित कर सकता हूं कि तारों की एक सरणी में एक निश्चित स्ट्रिंग होती है?
- 14. सत्यापित करें स्ट्रिंग एक प्रारूप
- 15. मैं जावा में एक स्ट्रिंग में इनपुटस्ट्रीम कैसे परिवर्तित करूं?
- 16. मैं asp.net mvc में DataAnnotations का उपयोग करके स्ट्रिंग लम्बाई को कैसे सत्यापित करूं?
- 17. मैं एक छोटे से एमसीई संपादक को कैसे सत्यापित करूं, यदि यह इसके आगे एक स्ट्रिंग जोड़कर खाली है?
- 18. मैं जावा में एक डीईआर एन्कोडेड स्ट्रिंग कैसे डीकोड करूं?
- 19. मैं एर्लांग में एक स्ट्रिंग को एक्सएमएल-एन्कोड कैसे करूं?
- 20. मैं एक यूआईसीओलर को हेक्साडेसिमल स्ट्रिंग में कैसे परिवर्तित करूं?
- 21. मैं एक सिंगल को स्ट्रिंग में कैसे परिवर्तित करूं?
- 22. यादृच्छिक स्ट्रिंग में अंग्रेजी शब्दों की गणना
- 23. मैं पायथन में एक स्ट्रिंग को संकुचित कैसे करूं?
- 24. मैं पर्ल में एक स्ट्रिंग की लंबाई कैसे प्राप्त करूं?
- 25. मैं एक org.w3c.dom.Document ऑब्जेक्ट को स्ट्रिंग में कैसे परिवर्तित करूं?
- 26. मैं सीएसएच में एक स्ट्रिंग कैसे विभाजित करूं?
- 27. अरबी यूटीएफ 8 + अंग्रेजी स्ट्रिंग
- 28. मैं एनएसएट्रिब्यूटेड स्ट्रिंग को HTML स्ट्रिंग में कैसे परिवर्तित करूं?
- 29. मैं कैसे तय करूं कि व्यूस्टेट में स्टोर करना है?
- 30. मैं अपने PHP एप्लिकेशन के उपयोगकर्ताओं को कैसे सत्यापित करूं?
"अंग्रेजी अक्षर" आप (अकेले तथ्य यह है कि लिपियों और भाषाओं काफी अलग बातें हैं करते हैं और के लिए अंग्रेजी का उपयोग करता है क्या हैं लैटिन लिपि)? "भद्दा" एक पूरी तरह से मान्य अंग्रेजी शब्द है, फिर भी इसमें एक गैर-ASCII पत्र शामिल है। यदि आपका डोमेन वास्तव में "अंग्रेजी शब्दों की स्ट्रिंग" है तो आपको बस "ASCII अक्षरों और अंकों के तार" का अर्थ होने से अधिक सावधान रहना होगा। – Joey
@ जोहान्स रोस्सेल अच्छा बिंदु! –
थोड़ा सा अनुमान लगाया गया कि नौ लोग सोचते हैं कि यह प्रश्न 'उपयोगी और स्पष्ट' है जब "केवल अंग्रेज़ी वर्ण और अंक होते हैं" बहुत ही संदिग्ध है ... – AakashM