预期结果:
如果变量cityName
存在
如果变量cityName
不存在-“:أوقاتالصلاة”
我得到的是:
${(cityName) ? " :" + cityName + "في " : ":"}وقت الصلاة\n
“:卡拉奇فيوقتالصلاة↵”
وقت الصلاة${(cityName) ? (" :" +cityName+" في ") : (":")}\n
;
“وقتالصلاة:卡拉奇في↵”
这可能是阿拉伯语的问题所在,因为即使我删除英文的后缀也只是为了测试它不起作用:
وقت الصلاة${(cityName) ? (" :في كراتشي") : (":")}\n
;
“وقتالصلاة:فيكراتشي↵”
${(cityName) ? (" :في كراتشي") : (":")} وقت الصلاة\n
;
“:فيكراتشيوقتالصلاة↵”
无论我做什么,我都没有得到正确的结果,我想要的是如何根据我的需要得到正确的结果,此外,如果有人能告诉我,多语种的科学(从左开始,从右开始,阿拉伯语从右开始)将是值得感谢的。我在英语中使用这种方法,从几年以来,它很好,但对阿拉伯语,它不起作用。
发布于 2020-08-10 13:21:22
在最后显示具有非阿拉伯字符的阿拉伯文本时,最好的解决方法是在非阿拉伯字符之后包含Unicode RTL代码。
当在不同方向的文本运行之间放置中性字符(如标点符号)时,就会发生这种情况。例如,阿拉伯Unicode表没有对应的字符代码!@#$%*:&
当您在阿拉伯文本末尾添加任何这些拉丁字符时,该字符将自己正确地定位到阿拉伯文本的右侧(即在阿拉伯文本从右到左阅读之前);根据阿拉伯文本的方向,这是不正确的。
通过在中立拉丁字符后面添加RTL "\u200F“的Unicode;您将指示拉丁语字符将RTL保持为其余文本;这将解决问题。无论是RTL还是LTR,这都是有效的,因为阿拉伯字符总是采用RTL方向。
这也允许将RTL和LTR文本合并在同一个句子中。
下面是一个(我希望)能为您解决这个问题的例子:
当然,这只是给你一个主意。忘记我是如何连接字符串,这只是为了解释。
您可以很容易地将它修改为三元操作符。
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
和使用三元运算符示例:
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)
发布于 2020-08-10 02:29:38
您的第一行是${( cityName )?“:+cityName+”في“:”:“}وقتالصلاة\n这是说如果cityName,那么返回所有之间的?和:(没有引号),不知道为什么要加上":“再加上城市的名字。
这不是Unicode字母的问题,它只是格式。
让我们以英文字母为例。如果城市名称,返回“纽约”,如果不是,返回“无”,所以
${cityName ? "new York" : "nothing"}
但我猜您想以某种方式返回城市名称的实际值,但我不知道阿拉伯语,也不知道原始cityName变量是在哪里定义的,我是否无法帮助您,但是内联if语句的格式是条件,后面跟着a ?,然后是如果满足条件就返回的表达式,后面是:,后面是返回的表达式。
https://stackoverflow.com/questions/63338314
复制相似问题