使用JavaScript将字符串中的元音替换为字符串中的索引

时间:2018-11-29 03:04:44

标签: javascript arrays regex loops

我需要用字符串中的索引+ 1替换字符串中的每个元音。 (函数名称= vowel2index)
输出示例:

 vowel2index('this is my string') == 'th3s 6s my str15ng'

我希望这个例子能说明我要做什么。我尝试使用如下所示的replace方法:

  str.replace(/[aeiou]/gi, str.indexOf(/[aeiou]/gi);

但是这并不能解决问题。我也尝试了下面的代码,但是我不知道从IF语句去哪里(我还没有使用数组元音):

 function vowel2index(str) {
 let vowels = ["a", "e", "i", "o", "u"];
 let arr = [];
 for(i = 0; i < str.length; i++){
     if (str[i] === /[aeiou]/gi) {
        arr.push(str.replace(str[i], indexOf(str[i])+1));
     }

任何帮助表示赞赏。仅供参考,这个问题来自代码战。

4 个答案:

答案 0 :(得分:3)

您快到了。 .replace函数accepts an offset parameter包含当前匹配项的索引,因此您可以只使用replacer函数,并返回该偏移量加1。不需要元音数组,只需在模式中使用元音字符集:

function vowel2index(str) {
  return str.replace(/[aeiou]/gi, (vowel, offset) => offset + 1);
}
console.log(vowel2index('this is my string')); // == 'th3s 6s my str15ng');

答案 1 :(得分:1)

几乎没有上面的@CertainPerformance答案那么干净,但蛮力解决方案是:

<?php

include 'config.php';

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

if($_SERVER['REQUEST_METHOD'] == 'POST') {
  $DefaultId = 0;
  $ImageData = $_POST['image_data'];
  $ImageName = $_POST['image_tag'];
  $ImagePath = "upload/$ImageName.jpg";
  $ServerURL = "http://192.168.18.125/$ImagePath";
  $InsertSQL = "INSERT INTO imageupload (image_path,image_name) 
  values('$ServerURL','$ImageName')";

  if(mysqli_query($conn, $InsertSQL)) {
    $decodedImage = base64_decode($ImageData);
    file_put_contents($ImagePath,$decodedImage);
    echo "Your Image Has Been Uploaded.";
  }

  mysqli_close($conn);
} else {
  echo "Please Try Again";
}
?>

答案 2 :(得分:1)

您可以尝试这个伴侣。

const vowel2index = str => str.replace(/[aeiou]/gi, (_, offset) => offset+1) 


console.log(vowel2index('this is my string'))

P.S。 :它将清除所有测试用例,因为我已经解决了该kata。 (很高兴见到来自Codewar的人♡)

答案 3 :(得分:0)

尝试一下:

function vowel2index(str) {
 for(i = 0; i < str.length; i++){
     if (str[i] === /[aeiou]/gi) {
        str.replace(str[i], indexOf(str[i])+1);
     }