var StringFunctions = {} ;
var EnglishEstesna = ['’'];
var arabicChars = 'ًٌٍَُِّْٰٜٕٖۣٞٝٓٔٗ٘ٙٚٛؕؔؓؐؑؒۖۘۗۙۚۛۜۢـ?',
arabicSames = ['ؤو','11','22','33','44','55','66','77','88','99','00',
'0٠۰','1١۱','9٩۹','8٨۸','7٧۷','6٦۶','5٥۵','4٤۴','3٣۳','2٢۲'
,'ييیىئ','اإأآ?','کك'],
arabicWord = 'والي';
/**@desc returns true if there was to many arabic signes there
* if the number of arabic sign was less than 1/4 , this function detect that the str is not arabic*/
StringFunctions.isArabic = function(str="")
{
var reg = new RegExp('['+arabicChars+']','g');
var founced = 0 ;
var L = Math.min(50,str.length) ;
var searchResult = reg.exec(str);
while(searchResult!==null && reg.lastIndexL/4)
{
return true ;
}
else
{
return false ;
}
}
/**@desc Returns true if currenct string has at least one persian script.
* @returns {Boolean}
*/
StringFunctions.isPersian = function(str="",stringLength=NaN)
{
var max = 0;
if(isNaN(stringLength))
{
max = Math.min(str.length , 200);
}
else
{
max = Math.min(str.length , stringLength) ;
}
for(var i = 0 ; i1000 && EnglishEstesna.indexOf(str.charAt(i))===-1)
{
//console.log('This is arabic : '+str.charAt(i)+' at '+i+' the char code is : '+str.charCodeAt(i));
return true ;
}
}
return false;
}
/**@desc it will returns list of points that shows index and ofsset of each word founded > [{x:0,y:0}]*/
StringFunctions.search = function(str="",searchedWord="",fineAll = true,arabic=false, arabic2=false)
{
var founded = [{x:0,y:0}];
founded = [] ;
if(str === '' || str === ' ')
{
return founded ;
}
if(arabic)
{
//arabic search has problems
var regularEx = '' ;
var L = searchedWord.length ;
var arabChars = arabicChars ;
if(arabic2)
{
arabChars+= arabicWord ;
}
for(var i = 0 ; i';
colorTagEnd = '';
}
//debug telephone
//console.log('phone enabled');
var regNumberDetection = /([\n\r\s\t,^])([\d-+]{7,})/gi;//([\n\r\s\t,])([\d-]{8,})([\t\n\r\s,])
console.log("Find the phone : "+str);
str = str.replace(regNumberDetection,'$1'+colorTagStart+'$2'+colorTagEnd);//
var regURLDetect = /(www|http:\/\/)[^ \n\r]*/gi ;///(www\. | http)\S*\s/gi;//TODO it has problem! if you pass an html with href= tag on it, it will break up the complete html
str = str.replace(regURLDetect,colorTagStart+'$&'+colorTagEnd);
//var regURLDetect2:RegExp = /http\S*\s/gi;
//str = str.replace(regURLDetect2,'$&');
var regDetectEmail = /[a-z.\-1234567890_]*@[a-z.\-_]*/gi ;
str = str.replace(regDetectEmail,colorTagStart+'$&'+colorTagEnd);
var doubleHTTP = /http:\/\/[ ]*http:\/\//gi;
str = str.replace(doubleHTTP,'http://');
return str ;
}
/**@desc *Clear in line "s in the json values:
* {"data":"my name is "ali"."}
* {"data":"my name is \"ali\"."}*/
StringFunctions.clearDoubleQuartmarksOnJSON = function(str="")
{
//var str:String = '[{"IdNews":"585","DateNews":"1394\\/8\\/20 ","SubjectNews":"fdjsakl fjk\\"adsl jfkldsa ","ImageNews":"http:\\/\\/www.melkban24.ir\\/Files\\/News585.jpg"},{"IdNews":"584","DateNews":"1394\\/8\\/20 ","SubjectNews":"fsjdkl klfsad jklfsjadk ljfklds","ImageNews":"http:\\/\\/www.melkban24.ir\\/Files\\/News584.jpg"},{"IdNews":"583","DateNews":"1394\\/8\\/19 ","SubjectNews":"fdjks jkfjd skfkjdkslfj jkfd f","ImageNews":"http:\\/\\/www.melkban24.ir\\/Files\\/News583.jpg"},{"IdNews":"582","DateNews":"1394\\/8\\/19 ","SubjectNews":"fdjfk kfjd lfdk lfkdsjkfkdfkls jkf","ImageNews":"http:\\/\\/www.melkban24.ir\\/Files\\/News582.jpg"},{"IdNews":"581","DateNews":"1394\\/8\\/18 ","SubjectNews":"مjkf jkfdjsk jkfldjkfld kfdjkfdjk","ImageNews":"http:\\/\\/www.melkban24.ir\\/Files\\/News581.jpg"},{"IdNews":"580","DateNews":"1394\\/8\\/18 ","SubjectNews":"fksjdf kfjds klfjkdlfkdsj f sf sfd","ImageNews":"http:\\/\\/www.melkban24.ir\\/Files\\/News580.jpg"},{"IdNews":"579","DateNews":"1394\\/8\\/18 ","SubjectNews":"fdskl jfsdkj kfdsjk jkflfdks","ImageNews":"http:\\/\\/www.melkban24.ir\\/Files\\/News579.jpg"},{"IdNews":"578","DateNews":"1394\\/8\\/18 ","SubjectNews":"fdsa fad" sfdsa"fdfsaf","ImageNews":"http:\\/\\/www.melkban24.ir\\/Files\\/News578.jpg"},{"IdNews":"577","DateNews":"1394\\/8\\/17 ","SubjectNews":"jisfad jkfsdjakj lfasjfdjfsdj kfsdjkl jkf","ImageNews":"http:\\/\\/www.melkban24.ir\\/Files\\/News577.jpg"},{"IdNews":"576","DateNews":"1394\\/8\\/17 ","SubjectNews":"fdf afd fsadfdsaf afs df asfsda fsda ","ImageNews":"http:\\/\\/www.melkban24.ir\\/Files\\/News576.jpg"}]';
var regexp = /(":"((?!"\},\{)(?!",")(?!"\}\])(?!"\})(.))*[^\\])"((?!\},\{)(?!,")(?!\}\])(?!\}))/gi
var lastStr = "" ;
do
{
lastStr = str ;
str = str.replace(regexp,'$1\\"')
}while(str!==lastStr)
return str ;
}
/**@desc This function will remove all spaces and tabs and enters from a string*/
StringFunctions.clearSpacesAndTabs = function(str="")
{
if(str===null)
return '' ;
return str.split('\n').join('').split('\r').join('').split('\t').join('').split(' ').join('');
}
/**@desc This function will remove all spaces and tabs and enters from a string*/
StringFunctions.clearSpacesAndTabsAndArrows = function(str="")
{
if(str===null)
return '' ;
return str.split('\n').join('').split('\r').join('').split('\t').join('').split(' ').join('').split('<').join('').split('>').join('');
}
///////////////////New Funciton on String funciont
StringFunctions.utfToUnicode = function(utfString="")
{
var reg = /u[0-9a-f][0-9a-f][0-9a-f][0-9a-f]/gi;
var searchResult = reg.exec(utfString);
var correctedString = '' ;
var index = 0 ;
var lastIndex = Infinity ;
var currentIndex ;
while(searchResult!==null)
{
lastIndex = reg.lastIndex ;
currentIndex = searchResult.index;
correctedString += utfString.substring(index,currentIndex)+StringFunctions.correctUTF(utfString.substring(currentIndex,lastIndex));
index = lastIndex ;
searchResult = reg.exec(utfString);
}
correctedString+=utfString.substring(index);
return correctedString ;
}
StringFunctions.correctUTF = function(utfWord="")
{
var num = utfWord.substring(1) ;
return String.fromCharCode(parseInt(num,16)) ;
}
/////////////////////////////////////////////////Sumerize texts
/**@desc This function will shorten the senteces by the len vlaue*/
StringFunctions.short = function(str="",len=10,removeEntersWith='')
{
if(str===null)
{
return '' ;
}
if(removeEntersWith!=='')
{
str = str.split('\r').join('\n').split('\n\n').join('\n').split('\n').join(removeEntersWith);
}
var dotString = '...';
var spaceIndex = str.indexOf(' ',len-dotString.length);
if(spaceIndex === -1)
{
if(str.length>len)
{
return str.substring(0,len-dotString.length)+dotString;
}
else
{
return str ;
}
}
else
{
if(spaceIndex>=str.length)
{
//remove donts from the end
dotString='';
}
return str.substr(0,spaceIndex)+dotString;
}
}
////////////////////////////////////////////////
/**@desc This function will make inserted html understandable for UnicodeConvertor
StringFunctions.htmlCorrect = function(htm="",linkColor=-1,replacePwithEnter=false,fontSizeIs=20)
{
return Unicode.htmlCorrect(htm,linkColor,replacePwithEnter,fontSizeIs)
}*/
///////////////////////////////////////////////////////Time functions
/**@desc return the time from seconds to string 10:54*/
StringFunctions.timeInString = function(seconds=0)
{
seconds = Math.ceil(seconds);
var min = Math.floor(seconds/60);
seconds = seconds%60;
var hour = Math.floor(min/60);
min = min%60;
if(hour>0)
{
return StringFunctions.numToString(hour)+':'+StringFunctions.numToString(min)+':'+StringFunctions.numToString(seconds);
}
else
{
return StringFunctions.numToString(min)+':'+StringFunctions.numToString(seconds);
}
}
/**@desc 1 > 001*/
StringFunctions.numToString = function(num,numberLenght=2)
{
num = String(num);
while(num.length]*>/gi;
return ReferText.replace(htmlDeleter,'');
}
/**@desc Returns -1 if string1 < str2, 1 if str1>str2*/
StringFunctions.compairFarsiString = function(str1="",str2="")
{
str1 = str1.toLowerCase();
str2 = str2.toLowerCase();
if(str1 === null)
{
str1 = '';
}
if(str2 === null)
{
str2 = '' ;
}
if(str1==='' && str2==='')
{
return 0 ;
}
if(str1==='' || str1 ===null)
{
return -1 ;
}
if(str2==='' || str2===null)
{
return 1 ;
}
var alephba = "ابپتثجچهخدذرزژسشصضطظعغفقكگلمنوهیي";
var farsiStr1 = StringFunctions.KaafYe(str1);
var farsiStr2 = StringFunctions.KaafYe(str2);
var index1 = alephba.indexOf(farsiStr1.charAt(0));
var index2 = alephba.indexOf(farsiStr2.charAt(0));
if(index1===-1 || index2 ===-1)
{
if(str1str2)
{
return 1 ;
}
else
{
return 0 ;
}
}
if(index1index2)
{
return 1 ;
}
else
{
return 0 ;
}
}
StringFunctions.htmlCharacterEncoder = function(str="")
{
var _htmlCar = [{from:"«",to:"«"},{from:"»",to:"»"},{from:" ",to:" "},{from:'<',to:"<"},{from:">",to:">"},{from:"&",to:"&"},{from:""",to:"\\\""},{from:"'",to:"'"},{from:"¢",to:"¢"},{from:"£",to:"£"},{from:"¥",to:"¥"},{from:"€",to:"€"},{from:"©",to:"©"},{from:"®",to:"®"},{from:"",to:" "}]
for(var i=0;i<_htmlCar.length;i++)
{
console.log('from :',_htmlCar[i].from,'to :',_htmlCar[i].to)
str = str.split(_htmlCar[i].from).join(_htmlCar[i].to)
}
return str
}
/**@desc this function will remove all persian ک and ی and will repace them with ي and ك*/
StringFunctions.KaafYe = function(str="")
{
return str.split('ی').join('ي').split('ک').join('ك').split('ى').join('ي');
}
StringFunctions.jsonCorrector = function(oldJson="")
{
return oldJson.split('\n').join(' \\n').split('\r').join(' \\r').split('"').join('"').split('\t').join('\\t')
}
/**@desc *0902-hello > hello . it will remove any number befor - sign. if there was a - sign
* 0000helo > 0000helo
* abs02-hello > abs02-hello*/
StringFunctions.removeNumberFromBegining = function(str="")
{
var firstDashIndex = str.indexOf('-');
if(firstDashIndex!==-1)
{
for(var i = 0 ; ifsd
return ''+pureHML+'';
}
////////////////////////////////////////////////////////
/**@desc Returns a domain of an url : www.google.com/translage >> google.com*/
StringFunctions.findMainDomain = function(url="",removeHTTPPart=true)
{
var founded = url.match(/^((http(s|):\/\/)|)[^/^:^\r^\n]+/);
if(founded===null || founded.length===0)
{
return '';
}
var theDomain = String(founded[0]).toLowerCase();
if(removeHTTPPart)
{
theDomain = theDomain.split('https://').join('').split('http://').join('').split('www.').join('')
}
return theDomain ;
}
/**@desc Return positive number if port founded*/
StringFunctions.findPortOfURL = function(url="")
{
var founded = url.match(/:[1234567890]+\//) ;
var portPart ;
if(founded===null || founded.length ===0 || (portPart = founded[0]).length<3)
{
return -1 ;
}
var portPartNumber = Number(portPart.substring(1,portPart.length-1));
if(isNaN(portPartNumber))
{
return -1 ;
}
else
{
return portPartNumber ;
}
}
/**@desc It will replace ي with ی and correct numbers. */
StringFunctions.correctInputString = function(str="")
{
return StringFunctions.KaafYe(StringFunctions.numCorrection(str));
}
StringFunctions.numCorrection = function(str="")
{
var I = String('۰').charCodeAt(0);
for(var i=I ; i>>>>>>2,500 12.5654*/
StringFunctions.currancyPrint = function(inputcurencynumber)
{
inputcurencynumber=String(inputcurencynumber);
var relPart = '' ;
var floatPart = '' ;
var splitedNumber = String(inputcurencynumber).split('.') ;
relPart = splitedNumber[0] ;
if(splitedNumber.length>1)
{
floatPart = '.'+splitedNumber[1] ;
}
else
{
floatPart = '' ;
}
inputcurencynumber = relPart ;
var s2="";
while (inputcurencynumber.length > 3) {
s2 = ',' + inputcurencynumber.substring(inputcurencynumber.length - 3, inputcurencynumber.length) + s2;
inputcurencynumber = inputcurencynumber.substring(0, inputcurencynumber.length - 3);
}
return inputcurencynumber+s2+floatPart
}
/**@desc http://www.google.com/342 >>> 342. but it will returns 0 if no number found at the end of line*/
StringFunctions.returnLasNumberPartInInteger = function(str="")
{
var matched = str.match(/[\d]+$/) ;
if(matched === null || matched.length === 0)
{
return 0 ;
}
return Math.floor(Number(matched[0])) ;
}
//////////////////////////////////STring to color
/**@desc Creats color from a link*/
StringFunctions.stringToColor = function(str="")
{
var col = 0 ;
for(var i = 0 ; i3 && lastCol<=6)?0xc0:10 ;
var maxBlueColor = (lastCol>6)?0xc0:10 ;
//console.log("maxRedColor : "+maxRedColor)
//console.log("maxGreenColor : "+maxGreenColor)
//console.log("maxBlueColor : "+maxBlueColor)
var red = (lastCol*87789.15484848)%maxRedColor+0x40;
var gre = (lastCol*55.15641498)%maxGreenColor+0x40;
var blu = (lastCol*99.3894516)%maxBlueColor+0x40;
//console.log("red : "+red.toString(16));
//console.log("gre : "+gre.toString(16));
//console.log("blu : "+blu.toString(16));
return red*0x010000+gre*0x000100+blu ;
}
/**@desc Remove spaces from two side of the inputed string : " hello world " > "hello world" */
StringFunctions.removeSpacesFromTwoSides=function(str="")
{
str = str.replace(/[\s]+$/g,'');
str = str.replace(/^[\s]+/g,'');
return str ;
}
/**@desc Returning file size in String with lable*/
StringFunctions.fileSizeInString = function(fileSizeInByte=0)
{
if(isNaN(fileSizeInByte))
{
return '' ;
}
if(fileSizeInByte<1000)
{
return Math.round(fileSizeInByte)+' B';
}
else if(fileSizeInByte<1000*1000)
{
return Math.round(fileSizeInByte/1000)+" K";
}
else if(fileSizeInByte<1000*1000*1000)
{
return Math.round(fileSizeInByte/(1000*1000))+" M";
}
else
{
return Math.round(fileSizeInByte/(1000*1000*1000))+' G';
}
}
export default StringFunctions ;