如何将波斯文字转换为数字

时间:2019-05-20 11:43:20

标签: javascript

我必须计算一个字符串的Abjad值。用户输入文本,它将返回Abjad表中的数字。

这是我的代码,尽管我知道这是错误的:

function letterValue(str) {
    var arrayAbjad = [
     {char1:الف,value: 1},{char2:ب, value: 2},{char3:ج, value: 3},{ char4:د,value: 4},
     {char5:ه,value: 5},{char6:و,value: 6},{char7:ز,value: 7},{char8:ح,value: 8},
     {char9:ط,value: 9},
     {char10: ی,value: 10},{char11:ک,value: 20},{char12:ل,value: 30},{char13: م,value: 40},
     {char14:ن,value: 50},{char15:س,value: 60}, {char16:ع,value: 70},
     {char17:ف,value: 80},{char18:ص,value: 90,},{char19:ق,value: 100},
     {char20:ر,value: 200},{char21:ش,value: 300},
     {char22: ت,value: 400},{char23:ث,value: 500},{char24:خ,value: 600},
     {char25:ذ,value: 700},{char26: ض,value: 800},
     {char27: ظ,value:900},{char28:غ,value:1000}    
    ]
    return arrayAbjad.find(value);
}

let str = prompt('enter string');
letterValue("str");

我想知道您是否能帮助我。

2 个答案:

答案 0 :(得分:0)

尝试此方法。首先,您要定义字母。然后调用搜索功能并遍历 str 中的每个字符。对于每个 char ,如果找到一个值,则将其循环到定义的字母,然后将其添加到 sum 。但是,这可能不是解决问题的最佳方法。

@Configuration
@EnableRedisRepositories("com.demo.redis.repository")
public class RedisDataSourceConfig {


    @Bean
    public JedisConnectionFactory jedisConnectionFactory() {
        log.debug("Create Jedis Connection Factory");
        return new JedisConnectionFactory();
    }


    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(jedisConnectionFactory());
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new JdkSerializationRedisSerializer());
        template.setHashKeySerializer(template.getKeySerializer());
        template.setHashValueSerializer(template.getValueSerializer());
        return template;
    }


    @Bean
    public RedisTemplate<String, Object> jsonRedisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(jedisConnectionFactory());
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
        redisTemplate.setHashKeySerializer(redisTemplate.getKeySerializer());
        redisTemplate.setHashValueSerializer(redisTemplate.getValueSerializer());
        return redisTemplate;
    }
}

spring.cache.type=redis
spring.redis.host=192.168.10.226
spring.redis.port=6379
spring.cache.redis.time-to-live=600000

答案 1 :(得分:0)

您的代码有一些问题:

  1. 正如我在评论中所说,字符(单词)应该用引号('")包裹
  2. 您可能希望数组中的所有项目都包含相同的属性,以便可以按它们进行过滤。
  3. 在您的代码filter中,function方法实际上得到的是value(您的意思是str)。无论如何,您可能需要阅读有关filter的更多信息,以了解其工作原理。

function letterValue(str) {
  var arrayAbjad = [{
      char: "الف",
      value: 1
    }, {
      char: "ب",
      value: 2
    }, {
      char: "ج",
      value: 3
    }, {
      char: "د",
      value: 4
    },
    {
      char: "ه",
      value: 5
    }, {
      char: "و",
      value: 6
    }, {
      char: "ز",
      value: 7
    }, {
      char: "ح",
      value: 8
    }, {
      char: "ط",
      value: 9
    }, {
      char: "ی",
      value: 10
    },
    {
      char: "ک",
      value: 20
    }, {
      char: "ل",
      value: 30
    }, {
      char: "م",
      value: 40
    }, {
      char: "ن",
      value: 50
    }, {
      char: "س",
      value: 60
    }, {
      char: "ع",
      value: 70
    },
    {
      char: "ف",
      value: 80
    }, {
      char: "ص",
      value: 90,
    }, {
      char: "ق",
      value: 100
    },
    {
      char: "ر",
      value: 200
    }, {
      char: "ش",
      value: 300
    },
    {
      char: "ت",
      value: 400
    }, {
      char: "ث",
      value: 500
    }, {
      char: "خ",
      value: 600
    }, {
      char: "ذ",
      value: 700
    }, {
      char: "ض",
      value: 800
    },
    {
      char: "ظ",
      value: 900
    }, {
      char: "غ",
      value: 1000
    }

  ]
  return arrayAbjad.find(item => item.char === str);

}

const str = prompt('enter string');
if (str) {
  const result = letterValue(str);
  if (result) {
    console.log(result.value);  
  } else {
    console.log('not found');
  }
}