1+ import 'package:intl/intl.dart' ;
2+ import 'dart:convert' show utf8, base64;
3+
4+ class CommonStringUtils {
5+
6+ static final String _exceptionTag = 'Exception on StringUtils : ' ;
7+ static final CommonStringUtils stringUtils = CommonStringUtils ._();
8+ String _mainStr = '' ;
9+
10+ CommonStringUtils ._();
11+
12+ void construct (String mainStr){
13+ this ._mainStr = mainStr;
14+ }
15+
16+
17+ String subStringBetween (String startStr,String endStr){
18+ String result;
19+ try {
20+ final startIndex = _mainStr.indexOf (startStr);
21+ final endIndex = _mainStr.indexOf (endStr, startIndex + startStr.length);
22+ result = _mainStr.substring (startIndex + startStr.length, endIndex);
23+ }
24+ catch (exc) {
25+ print ('$_exceptionTag $exc ' );
26+ }
27+
28+ return result;
29+ }
30+
31+
32+ List <String > subStringsBetween (String startStr,String endStr){
33+ List <String > results = List <String >();
34+ _mainStr.split ('$endStr ' ).forEach ((element) {
35+ if (element!= null && element.isNotEmpty){
36+ results.add (element.substring (element.indexOf ('$startStr ' )+ startStr.length));
37+ }
38+ });
39+ return results;
40+ }
41+
42+
43+ String subStringAfter (String targetStr,[bool lastIndex = false ]){
44+ String result;
45+ try {
46+ lastIndex ?
47+ result = _mainStr.substring (_mainStr.lastIndexOf ('$targetStr ' )+ targetStr.length)
48+ :
49+ result = _mainStr.substring (_mainStr.indexOf ('$targetStr ' )+ targetStr.length);
50+ }
51+ catch (exc) {
52+ print ('$_exceptionTag $exc ' );
53+ }
54+
55+ return result;
56+ }
57+
58+
59+ String subStringBefore (String targetStr,[bool lastIndex = false ]){
60+ String result;
61+ try {
62+ lastIndex ?
63+ result = _mainStr.substring (0 ,_mainStr.lastIndexOf ('$targetStr ' ))
64+ :
65+ result = _mainStr.substring (0 ,_mainStr.indexOf ('$targetStr ' ));
66+ }
67+ catch (exc) {
68+ print ('$_exceptionTag $exc ' );
69+ }
70+ return result;
71+ }
72+
73+
74+ String insertAt (int index,String wordStr){
75+ var selectStr = _mainStr[index];
76+ return _mainStr.replaceFirst ('$selectStr ' , '$selectStr ' + '$wordStr ' );
77+ }
78+
79+
80+ String removeAt (int index){
81+ var selectStr = _mainStr[index];
82+ return _mainStr.replaceFirst ('$selectStr ' , '' );
83+ }
84+
85+
86+ String insertAfter (String targetStr,String word){
87+ return _mainStr.replaceFirst ('$targetStr ' , '$targetStr ' + '$word ' );
88+ }
89+
90+
91+ String insertAfterEvery (String targetStr,String word){
92+ return _mainStr.replaceAll ('$targetStr ' , '$targetStr ' + '$word ' );
93+ }
94+
95+
96+ String removeAfter (String targetStr){
97+ var tempTarget = _mainStr.substring (_mainStr.indexOf ('$targetStr ' )+ targetStr.length);
98+ return _mainStr.replaceFirst ('$tempTarget ' , '' );
99+ }
100+
101+
102+ String removeBefore (String targetStr){
103+ var tempTarget = _mainStr.substring (0 ,_mainStr.indexOf ('$targetStr ' ));
104+ return _mainStr.replaceFirst ('$tempTarget ' , '' );
105+ }
106+
107+
108+ bool isNumericInt (){
109+
110+ final validCharacters = RegExp (r'^[0-9]+$' );
111+
112+ if (validCharacters.hasMatch (_mainStr)){
113+ return true ;
114+ }
115+ else {
116+ return false ;
117+ }
118+
119+ }
120+
121+
122+ bool isNumericDouble () {
123+ if (_mainStr == null ) {
124+ return false ;
125+ }
126+ return double .tryParse (_mainStr) != null ;
127+ }
128+
129+
130+ bool isAlphabetic (bool withSpace){
131+
132+ final validCharacters = withSpace ? RegExp (r'^[a-zA-Z ]+$' ) : RegExp (r'^[a-zA-Z]+$' );
133+
134+ if (validCharacters.hasMatch (_mainStr)){
135+ return true ;
136+ }
137+ else {
138+ return false ;
139+ }
140+
141+ }
142+
143+
144+ bool isUpperCase (){
145+
146+ final validCharacters = _mainStr.toUpperCase ();
147+ if (_mainStr == validCharacters && RegExp (r'^[a-zA-Z]+' ).hasMatch (_mainStr)){
148+ return true ;
149+ }
150+ else {
151+ return false ;
152+ }
153+
154+ }
155+
156+
157+ bool isAlphaNumeric (bool withSpace){
158+
159+ final validCharacters = withSpace ? RegExp (r'^[a-zA-Z0-9 ]+$' ) : RegExp (r'^[a-zA-Z0-9]+$' );
160+
161+ if (validCharacters.hasMatch (_mainStr)){
162+ return true ;
163+ }
164+ else {
165+ return false ;
166+ }
167+
168+ }
169+
170+
171+ bool isBlank (){
172+
173+ final validCharacters = RegExp (r'^[ ]+$' );
174+
175+ if (validCharacters.hasMatch (_mainStr)){
176+ return true ;
177+ }
178+ else {
179+ return false ;
180+ }
181+
182+ }
183+
184+
185+ bool isContainSpecialChar (){
186+
187+ final validCharacters = RegExp (r'^[a-zA-Z0-9 ]+$' );
188+
189+ if (! validCharacters.hasMatch (_mainStr)){
190+ return true ;
191+ }
192+ else {
193+ return false ;
194+ }
195+
196+ }
197+
198+
199+ bool isValidCharacters (RegExp validCharacters){
200+
201+ try {
202+ if (validCharacters.hasMatch (_mainStr)){
203+ return true ;
204+ }
205+ else {
206+ return false ;
207+ }
208+ }
209+ catch (exc){
210+ print ('$_exceptionTag $exc ' );
211+ return null ;
212+ }
213+
214+ }
215+
216+
217+ String convertEnglishNumberToPersian () {
218+ const english = ['0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' ];
219+ const farsi = ['۰' , '۱' , '۲' , '۳' , '۴' , '۵' , '۶' , '۷' , '۸' , '۹' ];
220+
221+ for (int i = 0 ; i < english.length; i++ ) {
222+ _mainStr = _mainStr.replaceAll (english[i], farsi[i]);
223+ }
224+ return _mainStr;
225+ }
226+
227+
228+ String convertPersianNumberToEnglish () {
229+ const english = ['0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' ];
230+ const farsi = ['۰' , '۱' , '۲' , '۳' , '۴' , '۵' , '۶' , '۷' , '۸' , '۹' ];
231+
232+ for (int i = 0 ; i < farsi.length; i++ ) {
233+ _mainStr = _mainStr.replaceAll (farsi[i], english[i]);
234+ }
235+ return _mainStr;
236+ }
237+
238+
239+ String convertToMoneyFormat (){
240+ final formatter = new NumberFormat ("#,###" , "en_US" );
241+ if (isNumericDouble ()){
242+ if (isNumericInt ()){
243+ return formatter.format (int .parse (_mainStr));
244+ }
245+ return formatter.format (double .parse (_mainStr));
246+ }
247+ else {
248+ return null ;
249+ }
250+ }
251+
252+
253+ int countWords (String wordStr){
254+
255+ int wordCount = 0 ;
256+ wordCount = '$wordStr ' .allMatches ('$_mainStr ' ).length;
257+ return wordCount;
258+
259+ }
260+
261+
262+ int countLines (){
263+
264+ int lineCount = 0 ;
265+ lineCount = '\n ' .allMatches ('$_mainStr ' ).length;
266+ return lineCount+ 1 ;
267+
268+ }
269+
270+
271+ String reverse () {
272+ return _mainStr.split ('' ).reversed.join ();
273+ }
274+
275+
276+ String reverseWords () {
277+ return _mainStr.split (' ' ).reversed.join (' ' );
278+ }
279+
280+
281+ String removeBlankLines (){
282+ return _mainStr.replaceAll (new RegExp (r'(?:[\t ]*(?:\r?\n|\r))+' ), '\n ' );
283+ }
284+
285+
286+ String removeLinesThatContain (String wordStr){
287+ var lines = _mainStr.split ('\n ' );
288+ for (var lineItem in _mainStr.split ('\n ' )){
289+ if (lineItem.contains ('$wordStr ' )){
290+ lines.remove (lineItem);
291+ }
292+ }
293+ return lines.join ('\n ' );
294+ }
295+
296+ bool isEmail (){
297+ var emailValidation = RegExp (r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?)*$" );
298+ if (emailValidation.hasMatch (_mainStr)){
299+ return true ;
300+ }
301+ else {
302+ return false ;
303+ }
304+ }
305+
306+ String convertToBase64 (){
307+ return base64.encode (utf8.encode (_mainStr));
308+ }
309+
310+ String convertBase64ToString (){
311+ return utf8.decode (base64.decode (_mainStr));
312+ }
313+
314+ List <int > convertToUTF8 (){
315+ return utf8.encode ('$_mainStr ' );
316+ }
317+
318+ }
0 commit comments