How can i extract vowels in a Javascript String? [closed] - javascript

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 2 years ago.
Improve this question
If i have 'var' how can i get "e,o,o" out of it ?
With substring you can only get the position
var str = "Hello world!";
var res = str.substring(1, 4);

It's not entirely clear if you only want the vowels or if you want all except the vowels. Either way, a simple regular expression can get the characters you need.
let str = "Hello World";
let res = str.match(/[aeiou]/ig).join("");
console.log(res);
let res2 = str.match(/[^aeiou]/ig).join("");
console.log(res2);
Remove the .join("") part if you want an array, otherwise this gives you a string

How about:
var str = "Hello world!";
var theGoods = str.split('').filter(c => ['e', 'o'].includes(c)).join('');
Or if you wanted the 'inverse' behavior
var str = "Hello world!";
var theGoods = str.split('').filter(c => !['e', 'o'].includes(c)).join('');

You can loop the string and store those vowels in an array.
var arr = [];
for(var i = 0; i < str.length; i++){
if(str[i] == 'e' || str[i] == 'o'){
arr.push(str[i]);
}
}
console.log(arr);}

It's pretty easy to extract them, as long as you know RegEx (regular expression)
var str = "Hello world!" // The original string
var res = str.match(/[aeiou]/gi).join("") // Extracting the vowels
// If you want to get the consonants, here you go.
var res2 = str.match(/[^aeiou]/gi).join("")
// Logging them both
console.log(res)
console.log(res2)

function deletevowels(str) {
let result = str.replace(/[aeiou]/g, '')
return result
}
var text = "Hi test of Replace Javascript";
const a = deletevowels(text);
console.log(a);

Related

Document document is not defined javascript in Google apps Script [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 26 days ago.
Improve this question
I can't run my code in the Google Apps Script editor. Clicking Run gives the error document is undefined.
I am trying to create a function that separates a String into substrings using a separator character and returns those substrings in an array.
function splitSrt(str, delim) {
var word = "";
var num = 0;
str = str + delim;
var x = str.length;
var substr_list = [];
for( var i = 0; i < x; i++){
if(str[i] != delim)
word = word + str[i];
else{
if(word.length != 0)
substr_list.push(word);
word = "";
}
}
return substr_list;
}
var str = "hello my world";
var delim = ' ';
var res = splitSrt(str, delim);
res.forEach(a => {
document.write( a + "<br>");
});
The code you quote will not work in Apps Script because it is attempting to write to a web page through the DOM method document.write(), which is not available in server-side code such as Node.js or Apps Script.
The problem is "function that separates a String into substrings using a passable character and returns them in an array"
You probably do not need to write a function for that. Simply use String.split(), like this:
function test() {
const str = "hello my world";
const delim = ' ';
const res = str.split(delim);
res.forEach(word => {
console.log(word);
});
}
For more complex splitting, use a regular expression as the separator.
If you really need to create your own string splitter function, start with something like this:
function splitSrt(str, delim) {
return String(str).split(delim);
}

Split string into even numbers forming a square [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 4 years ago.
Improve this question
My objective is to split string (less than 80 characters) evenly to create a square or rectangle of strings.
var squareStr = function(str) {
}
console.log(squareStr('whatwonderfulday'));
console.log(squareStr('if life was easy god then god would not have given us brain to think'));
should output:
what
wond
erfu
lday
iflifewa
seasythe
ngodwoul
dnothave
givenusb
raintoth
ink
is this possible? I've been told I can use Math.sqrt but I'm not too sure how.
Thanks.
You can use a for loop to slice the string into the pieces and add a new line (\n) at the end of each chunk.
If you want to automatically use the square root of the string length you can do it like this:
function squareCode(string){
let squareString = "";
string = string.replace(/\s/g, '');
const splitNum = Math.floor(Math.sqrt(string.length));
for(i=0; i<= string.length; i+=splitNum){
squareString = `${squareString}${string.slice(i, i+splitNum)}\n`;
}
return squareString;
}
console.log(squareCode('whatwonderfulday'));
console.log(squareCode('if life was easy god then god would not have given us brain to think'));
console.log(squareCode('asdfasdf asdfasdfasd fasdfwe wer df gf dgdfgertqewdfsf fgdgewfwdsgewerfsd fdgdfgqefasdf'));
In the following function you'll pass in the string you want to slice as well as the number you want to slice at:
function squareCode(string, splitNum){
let squareString = "";
string = string.replace(/\s/g, '');
for(i=0; i<= string.length; i+=splitNum){
squareString = `${squareString}${string.slice(i, i+splitNum)}\n`;
}
return squareString;
}
console.log(squareCode('whatwonderfulday', 4));
console.log(squareCode('if life was easy god then god would not have given us brain to think', 8));
You could use this function. It replace all the empty spaces, then convert the string into an array and chunk it. Finally if merge every chunk and apply \n to each one.
var squareStr = function(str, chunk) {
str = str.replace(/ /g, '')
str = str.split('');
temp = []
for (i=0; i<str.length; i+=chunk)
temp.push(str.slice(i,i+chunk));
return temp.map(function(a){return a.join('')+"\n"}).join('')
}
console.log(squareStr('whatwonderfulday', 4));
console.log(squareStr('if life was easy god then god would not have given us brain to think', 8));
So many ways of doing that...
All other answers here are correct too, here's my approach, a more "readable" answer, using very basic recurses...
You have should at least tried...
I also have included a check to see if the string lenght is under 80.
var squareStr = function(str, charsPerLine) {
if (str.length > 80){
return;
}
str = str.replace(/ /g,'')
var stringSplited = str.split('');
var newString = '';
stringSplited.forEach(function(letter,index){
if (index % charsPerLine == 0 && newString.length > 0){
newString += '\n'; //IF YOU WANT TO USE IT IN THE HTML, USE '<br>' HERE
}
newString += letter;
});
console.log(newString);
return newString;
}
squareStr('whatwonderfulday', 4);
squareStr('if life was easy god then god would not have given us brain to think', 8);
Unless you're dealing with really long strings, I don't see a reason not to use replace to insert a newline every n characters:
function squareText(input) {
const inputNoSpaces = input.replace(/\s/g, '');
const partLen = Math.ceil(Math.sqrt(inputNoSpaces.length));
const replaceExpr = new RegExp(`.{1,${partLen}}`, 'g');
return inputNoSpaces.replace(replaceExpr, '$&\n');
}
const input = 'if life was easy then god would not have given us brain to think';
console.log(squareText(input));
This just calculates the line length and then creates a new RegExp that matches that many characters and uses it to replace each match with itself plus a newline.

How to remove the blank lines in a textarea with JavaScript? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I get the content of a textarea with:
var stringArray = document.getElementById('textarea').value;
I must remove all blank lines (even blank lines with spaces). What is an efficient way to do that?
EDIT: I want to remove the blank lines, not the whitespace.
e.g.
A
B
C
D
to
A
B
C
D
Finally I managed to make it work. This is the code just in case someone else would need it:
function delBlankLines() {
var stringArray = document.getElementById('textarea').value.split('\n');
var temp = [""];
var x = 0;
for (var i = 0; i < stringArray.length; i++) {
if (stringArray[i].trim() != "") {
temp[x] = stringArray[i];
x++;
}
}
temp = temp.join('\n');
document.myform.textarea.value = temp;
}
So, the textarea content is split into a string array, that array is looped and checked if the trimmed current line is blank; if it's not, the line is copied to a temporary string array (basically the blank lines are ignored). At the end, I update the textarea with the temporary string array.
you can use the native JavaScript trim method (available on the string prototype): textareaValue.trim().
Trivia: there's automatic setting of window.textarea to be document.getElementById('textarea'). So you can access that by just doing textarea. Therefore to access the textual content of the textarea you can use: textarea.innerHTML or const textAreaValue = textarea.value.
Next, run textAreaValue.trim(); this will get rid of any outer white space. " \n\n textArea \n\n\t\n " will turn into just "textArea".
Ok now we can split on new lines: const stringArray = textAreaValue.split('\n'). Since \n is the carriage return aka new line symbol.
Next, we'll want to skip any lines which have nothing but whitespace which we can probably find in a few ways but to be safest \S should work. To test out different regexes I recommend: regex101.com.
For a more modern version:
textarea.value = `
the
quick
brown
fox
jumped
over the lazy
dog.
`;
/*
function oldSolution() {
var cleanedString = '';
console.log(textarea.value);
var stringArray = textarea.value.trim().split('\n');
for(var i = 0; i < stringArray.length; i++){
var line = stringArray[i];
if(line.match('/\S/') !== -1){
cleanedString += line.trim();
}
}
console.log(cleanedString);
output.innerText = cleanedString;
return cleanedString;
}
*/
const cleanText = () => {
const stringArray = textarea.value
.trim()
.split('\n')
.filter(line => /\S/.test(line));
console.log({stringArray})
const cleanedString = stringArray.map(line => line.trim()).join(' ');
console.log(cleanedString);
output.innerText = cleanedString;
return cleanedString;
}
<textarea rows='5' cols='50' id='textarea'></textarea>
<input type='button' value='Extract Text' onclick='cleanText()'/>
<div id="output"></div>

Extract a part of a string [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question appears to be off-topic because it lacks sufficient information to diagnose the problem. Describe your problem in more detail or include a minimal example in the question itself.
Closed 8 years ago.
Improve this question
I need to extract a part of a string. My goal is to extract from this string:
217591953.1396968335.2.2.utmcsr=search_email_alerts|utmccn=(not set)|utmcmd=email
the content between utmcsr= and |
So the output would be : "search_email_alerts".
var str = "217591953.1396968335.2.2.utmcsr=search_email_alerts|utmccn=(not set)|utmcmd=email";
var newStr1 = str.split("utmcsr=");
var newStr2 = newStr1[1].split("|");
var extractedStr = newStr2[0];
The variable extractedStr will be "search_email_alerts".
Use regular expression like following:
var test = "217591953.1396968335.2.2.utmcsr=search_email_alerts|utmccn=(not set)|utmcmd=email";
var result = test.match("/utmcsr=([^|]*)\|/");
alert(result[1]); // result[1] is your desired string
var str = "217591953.1396968335.2.2.utmcsr=search_email_alerts|utmccn=(not set)|utmcmd=email";
match = str.match(/utmcsr=(.*?)\|/);
output = match[1];
var str = "217591953.1396968335.2.2.utmcsr=search_email_alerts|utmccn=(not set)|utmcmd=email"
var result = str.substring(str.indexOf("utmcsr=") + 7,str.indexOf("|"))
Result contains the desired text.
You can do that in two ways
substring
match
Here's how you can do it with regex:
var str= "217591953.1396968335.2.2.utmcsr=search_email_alerts|utmccn=(not set)|utmcmd=email";
var res = str.match(/^.*utmcsr=(.*)\|.*\|.*$/);
res[1]
Here you go -
var str = "217591953.1396968335.2.2.utmcsr=search_email_alerts|utmccn=(not set)|utmcmd=email";
var startIndex = str.indexOf("utmcsr=") + "utmcsr=".length;
var numOfCharsToExtract = str.indexOf("|") - startIndex;
var result = str.substring(startIndex, numOfCharsToExtract);

Regex : split string based on first occurrence, with occurance [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 9 years ago.
Improve this question
I am terrible at regex. Please have pity and give me a hand.
I am trying to split a string by the first occurrence of And (case sensitive), into an array with a length of 2. I have no idea were to begin, so can someone help me?
var strArr = "Thing And other thing".split(/magic regex/);
expect(strArr).to.deep.equal(["Thing","And other thing"]);
var strArr = "Thing and other thing".split(/magic regex/);
expect(strArr).to.deep.equal(["Thing and other thing", ""]);
var strArr = "One Thing And other thing And yet another thing".split(/magic regex/);
expect(strArr).to.deep.equal(["One Thing","And other thing And yet another thing"]);
var strArr = "yep, just one thing".split(/magic regex/);
expect(strArr).to.deep.equal(["yep, just one thing", ""]);
UPDATE this is working exactly the way I need it to, but its still ugly:
parser = function(str) {
var spl;
spl = str.split(/\s(?=And )/);
if (spl.length > 1) {
spl = [spl.shift(), spl.join(" ")];
} else {
spl = [str, ''];
}
return spl;
};
There is no need for a regular expression for that. Just get the first index of "And" in the string:
var i = str.indexOf("And");
var strArr;
if (i == -1) {
strArr = [ str ];
} else {
strArr = [ str.substr(0, i), str.substr(i) ];
}
While Guffa's method works, if you end up needing to do this the regex way, the following will work (via a positive lookahead):
var str = "Thing And other thing";
var spl = str.split(/\s(?=And\s)/);
if (spl.length > 1)
spl = [spl.shift(), spl.join(" ")];
To test:
alert(JSON.stringify(spl));
jsFiddle
Updated to ensure it splits on [space]And[space]
I suggest doing a simple split then checking if the array has one or two
strArr.split("And", 2).length;

Categories

Resources