আমি কীভাবে এটি নির্ধারণ করতে পারি যে কোনও স্ট্রিং নন-নাল এবং গ্রোভিতে কেবল সাদা স্থান নয়?


128

গ্রোভি isAllWhitespace()স্ট্রিংগুলিতে পদ্ধতিটি যুক্ত করে , এটি দুর্দান্ত, তবে কোনও স্ট্রিংয়ের মধ্যে কেবল সাদা স্থান ছাড়া অন্য কোনও কিছু রয়েছে কিনা তা নির্ধারণের কোনও ভাল উপায় বলে মনে হয় না ।

আমি যে সেরাটির সাথে আসতে পেরেছি তা হ'ল:

myString && !myString.allWhitespace

তবে এটি খুব ভার্জিক মনে হচ্ছে। এই বৈধতা আছে এমন একটি সাধারণ জিনিস মত মনে হয় উচিত নয় এই নির্ধারণ করার জন্য একটি সহজ উপায় হতে।

উত্তর:


245

আরেকটি বিকল্প হ'ল

if (myString?.trim()) {
  ...
}

3
myString? .trim () প্রশ্নের পরিবর্তে একটি স্ট্রিং (বা নাল বা ফাঁকা) দেয় যা বুলিয়ান দেয় returns আমি অনুমান করি এটি নির্ভর করে আপনি কীভাবে আউটপুটটি ব্যবহার করছেন, কেবলমাত্র 'যদি' ঠিক আছে।
স্টিভেন

12
বাboolean containsData = myString?.trim()
টিম_ইয়েটস

4
স্টিভেন, গ্রোভী সত্য বলেছেন যে নাল বা ফাঁকা স্ট্রিংটি মিথ্যা, সুতরাং আপনি ()যদি এটির কোনও বিবৃতিতে এটির প্রয়োজন হয় যা ইতিমধ্যে এটি বুলিয়ান না করে। উদাহরণস্বরূপ,def myVal = (myString?.trim())
সিডিজেখাক

12
@ cdeszaq আপনি যদি তা করেন def myVal = (myString?.trim())তবে myValতা হয় হয় Stringবা nullএটি বন্ধনীগুলিতে আবৃত করা এটি কোনও বুলিয়ান হিসাবে পরিবর্তন করে না। তবে, আপনি যদি এটি বুলিয়ান ভেরিয়েবলকে ব্যবহার করেন বা ব্যবহার করেন (myString?.trim()) as boolean(বা আমার উত্তর হিসাবে) এটি একটি ifবিবৃতিতে ব্যবহার করেন , তবে আপনি যেভাবে বলছেন এটি স্ট্রিংয়ের (বা নাল) গ্রোভি ট্রুথ মানটি ব্যবহার করবে
টাইম_ইটস

2
​if ("false") println "that's true too"
টিম_ইয়েটস

9

আপনি স্ট্রিংকে আরও অর্থপূর্ণ করে তুলতে একটি পদ্ধতি যুক্ত করতে পারেন:

String.metaClass.getNotBlank = { !delegate.allWhitespace }

আপনি কি করা যাক:

groovy:000> foo = ''
===> 
groovy:000> foo.notBlank
===> false
groovy:000> foo = 'foo'
===> foo
groovy:000> foo.notBlank
===> true

3
মেটা ক্লাস পরিবর্তন করার সেরা স্থানটি কোথায় থাকবে?
সিডেসেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.