首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有三值运算符的条件字符串不处理多语言字符串- javascript nodejs

带有三值运算符的条件字符串不处理多语言字符串- javascript nodejs
EN

Stack Overflow用户
提问于 2020-08-10 02:22:21
回答 2查看 192关注 0票数 1

预期结果:

如果变量cityName存在

如果变量cityName不存在-“:أوقاتالصلاة”

我得到的是:

${(cityName) ? " :" + cityName + "في " : ":"}وقت الصلاة\n

“:卡拉奇فيوقتالصلاة↵”

وقت الصلاة${(cityName) ? (" :" +cityName+" في ") : (":")}\n

“وقتالصلاة:卡拉奇في↵”

这可能是阿拉伯语的问题所在,因为即使我删除英文的后缀也只是为了测试它不起作用:

وقت الصلاة${(cityName) ? (" :في كراتشي") : (":")}\n

“وقتالصلاة:فيكراتشي↵”

${(cityName) ? (" :في كراتشي") : (":")} وقت الصلاة\n

“:فيكراتشيوقتالصلاة↵”

无论我做什么,我都没有得到正确的结果,我想要的是如何根据我的需要得到正确的结果,此外,如果有人能告诉我,多语种的科学(从左开始,从右开始,阿拉伯语从右开始)将是值得感谢的。我在英语中使用这种方法,从几年以来,它很好,但对阿拉伯语,它不起作用。

EN

回答 2

Stack Overflow用户

发布于 2020-08-10 13:21:22

在最后显示具有非阿拉伯字符的阿拉伯文本时,最好的解决方法是在非阿拉伯字符之后包含Unicode RTL代码。

当在不同方向的文本运行之间放置中性字符(如标点符号)时,就会发生这种情况。例如,阿拉伯Unicode表没有对应的字符代码!@#$%*:&

当您在阿拉伯文本末尾添加任何这些拉丁字符时,该字符将自己正确地定位到阿拉伯文本的右侧(即在阿拉伯文本从右到左阅读之前);根据阿拉伯文本的方向,这是不正确的。

通过在中立拉丁字符后面添加RTL "\u200F“的Unicode;您将指示拉丁语字符将RTL保持为其余文本;这将解决问题。无论是RTL还是LTR,这都是有效的,因为阿拉伯字符总是采用RTL方向。

这也允许将RTL和LTR文本合并在同一个句子中。

下面是一个(我希望)能为您解决这个问题的例子:

当然,这只是给你一个主意。忘记我是如何连接字符串,这只是为了解释。

您可以很容易地将它修改为三元操作符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function showPrayerTime(city,Time) {
  let RTL = "\u200F";
  let prefix = "أوقات الصلاة";
  let prefix2 = prefix + " " + "في" + " ";
  
  switch (city) {
     
    case "KHI" :
      result = prefix2 + "كراتشي" + ":" + RTL;
      break;
      //---------------------
      case "DOH" :
      result = prefix2 + "الدوحة" + ":" + RTL;
      break;
      //---------------------
    default:
     result = prefix + ":" + RTL;
      
  }
  
  return result
  
}

console.log(showPrayerTime("KHI"));
console.log(showPrayerTime("DOH"));
console.log(showPrayerTime(""));

您可以在这里阅读更多关于RTL Unicode的内容:https://www.w3.org/TR/WCAG20-TECHS/H34.html

和使用三元运算符示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let cityName = "كراتشي";
let prefix = "وقت الصلاة";
let suffix = ":" + "\u200F";


//==== example 1
let result = cityName ? prefix+" في "+cityName+suffix : prefix+suffix;
console.log(result)


//==== example 2
cityName = "";
result = cityName ? prefix+" في "+cityName+suffix : prefix+suffix;
console.log(result)

票数 1
EN

Stack Overflow用户

发布于 2020-08-10 02:29:38

您的第一行是${( cityName )?“:+cityName+”في“:”:“}وقتالصلاة\n这是说如果cityName,那么返回所有之间的?和:(没有引号),不知道为什么要加上":“再加上城市的名字。

这不是Unicode字母的问题,它只是格式。

让我们以英文字母为例。如果城市名称,返回“纽约”,如果不是,返回“无”,所以

${cityName ? "new York" : "nothing"}

但我猜您想以某种方式返回城市名称的实际值,但我不知道阿拉伯语,也不知道原始cityName变量是在哪里定义的,我是否无法帮助您,但是内联if语句的格式是条件,后面跟着a ?,然后是如果满足条件就返回的表达式,后面是:,后面是返回的表达式。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63338314

复制
相关文章
Javascript字符串处理
说明: 字符串替换字符还是replace()最强大~默认替换第一个符合条件的字符串,也可用正则做全局匹配
kif
2023/02/27
4910
字符串插值_让我们帮助QueryProvider处理插值字符串
QueryProvider的细节 (Specifics of QueryProvider)
用户7886150
2021/01/14
7630
javascript中遇到的字符串对象处理
在javascript中对参数处理: 1 <script> 2 function getParam() 3 { 4 urlInfo=window.location.href; //获取当前页面
Ryan-Miao
2018/03/13
1.3K0
JavaScript 超详细的字符串处理方法
仅供学习,转载请注明出处 1、字符串合并操作:“ + ” var iNum01 = 12; var iNum02 = 24; var sNum03 = '12'; var sTr = 'ab
Devops海洋的渔夫
2019/06/02
6780
shell 默认值设置 字符串处理
image.png image.png
用户5760343
2022/05/19
6750
shell 默认值设置 字符串处理
JavaScript条件运算三元运算符和四元运算符的写法
exprIfTrue 如果表达式 condition 的计算结果是 truthy(它和 true 相等或者可以转换成 true ),那么表达式 exprIfTrue 将会被求值。
德顺
2020/04/01
2.1K0
JavaScript中字符串运算符是什么?有哪些?
在JavaScript中,使用 + 和 += 这两个运算符对字符串进行连接运算,前者用于连接两个字符串,后者则连接两个字符串,并将结果赋给第一个字符串。
Javanx
2020/08/19
7640
JavaScript中字符串运算符是什么?有哪些?
JavaScript 字符串
字符串的索引从 0 开始,这意味着第一个字符索引值为 [0],第二个为 [1], 以此类推。
陈不成i
2021/07/16
7020
JavaScript 字符串
toString() 方法,返回一个表示该对象的字符串,可以将所有的数据都转换为字符串,但是要排除掉 null 和 undefined
Nian糕
2018/08/21
7200
JavaScript 字符串
JavaScript 字符串
如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是如此。
RiemannHypothesis
2022/10/06
5740
Bash处理字符串系列函数(三)
文章目录 反转字符串大小写 从字符串中删除引号 从字符串中删除模式的所有实例 反转字符串大小写 警告: 需要 bash 4+ 示例函数: reverse_case() { # Usage: reverse_case "string" printf '%s\n' "${1~~}" } 示例用法: $ reverse_case "hello" HELLO $ reverse_case "HeLlO" hElLo $ reverse_case "HELLO" hello 从字符串中删除引号 示
程序员小涛
2021/12/06
2400
Bash处理字符串系列函数(三)
@TOC 反转字符串大小写 警告: 需要 bash 4+ 示例函数: reverse_case() { # Usage: reverse_case "string" printf '%s\n' "${1~~}" } 示例用法: $ reverse_case "hello" HELLO $ reverse_case "HeLlO" hElLo $ reverse_case "HELLO" hello 从字符串中删除引号 示例函数: trim_quotes() { # Usage:
程序员小涛
2021/02/20
3370
Bash处理字符串系列函数(三)
Javascript字符串
## 定义 ``` var str = new String("abcdefg"); var str = "abcdefg"; ``` ## 常用方法 ### 字符方法 1.charAt(index):返回下标为index的字符 ``` //字符串“Hello World!”下标为1的字符 var str = "Hello World!"; console.log(str.charAt(1)); // e ``` 2.方括号[index]:返回下标为index的字符(IE8以前不支持,会返回undefin
用户1624346
2018/04/10
6220
javascript字符串
字符串是JavaScript中7种数据中的一种,用于表示由零个或多个16位的Unicode字符组成的字符序列。创建字符串有两种方式,一种是字面量,另一种是构造函数。
踏浪
2019/07/31
4990
条件运算符? : (三目运算符)
条件运算符? : (三目运算符) 条件运算符 ? :,可以用来替代 if...else 语句。它的一般形式如下: Exp1 ? Exp2 : Exp3; 其中,Exp1、Exp2 和 Exp3 是表达
用户6755376
2020/03/23
1.8K0
条件运算符? : (三目运算符)
JavaScript字符串“三剑客”
JavaScript字符串方法有很多,其中有三个方法与字符串裁剪有关,他们分别是slice()、substring()和substr(),我把他们统称为“三剑客”。 由于他们都是用于裁剪字符串,很容易混淆,所以接下来我将结合具体实例来讲讲他们的共同点和区别。 一、共同点 接受一个或两个参数,其中第一个参数为裁剪的开始位置 都会返回被裁剪下来的子字符串,而原字符串不受影响 若不传第二个参数,则从开始位置(第一个参数)一直截取到字符串结尾。 可以看出,当只传入一个参数时,这三个方法的用法和作用都是一致的,都
企鹅号小编
2018/02/05
5920
JavaScript字符串“三剑客”
带有通配符的字符串匹配算法-C/C++
日前某君给我出了这样一道题目:两个字符串,一个是普通字符串,另一个含有*和?通配符,*代表零个到多个任意字符,?代表一个任意字符,通配符可能多次出现。写一个算法,比较两个字符串是否相等。 我花了四个小
一见
2018/08/07
2.2K0
JavaScript字符串
JavaScript 字符串是引号(单引号或双引号)中的零个或多个字符,用于存储和操作文本。
hotarugali
2022/03/01
6740
JavaScript字符串
JavaScript 字符串(String)就是由零个或多个 Unicode 字符组成的字符序列。零个字符表示空字符串。
用户3519280
2023/07/07
1760
shell 字符串处理的三个技巧
$mychar=`echo $mychar |awk -F "=" '{print $1}'`
力哥聊运维与云计算
2019/06/28
6060

相似问题

用三值条件运算符串联Python字符串

27

三值运算符条件语句不工作

20

三值条件运算符不返回true/false

11

F#中插值字符串中的三值条件运算符

16

(Javascript)三值运算符问题的多个条件集

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文