【问题标题】:Adding Quotes in Java在 Java 中添加引号
【发布时间】:2016-08-17 19:45:00
【问题描述】:

我之前问过similar question Swift,现在我在 Android/Java 中遇到了同样的问题。

Java 中有没有办法在字符串中添加引号?引号应根据用户的语言设置正确本地化(请参阅https://en.wikipedia.org/wiki/Quotation_mark)。文本不带引号存储在数据库中。添加引号后,我想在 TextView 中显示字符串。

例如:

String quote = "To be or not to be..."
// one or more lines of code that add localized quotation marks
// to the beginning and the end of the string
mMyTextView.setText(stringWithQuotes);

对于法国用户:«To be or not to be...»

对于德国用户:„成为或不成为...“

对于英语(美国)用户:“To be or not to be...

【问题讨论】:

  • @Reimeus 这并没有设置 OP 正在讨论的各种类型的引号。只是英文引号。
  • stackoverflow.com/questions/17433667/… 是 Java 的答案。不过LocaleData似乎不在集成到Android 7.0的ICU4J子集中,也不知道ICU4J本身是否可以在Android上运行。
  • @CommonsWare 很有趣,谢谢。我会检查我是否可以使用它。
  • 快速浏览了一些关于 ICU4J 的信息。如果可能的话,在 Android 上使用它看起来并不那么简单。使用一些if 语句可能更容易处理它,尤其是在支持的语言环境数量相当少的情况下。无论如何感谢您的指针。
  • @SusannahPotts 是的。你回复的评论在我看到它之前就被删除了,但我想它只是在逃避“工程报价”。这里也许应该提到的是,即使在英语中,它们在印刷上也是不正确的。我相应地更正了这个问题。

标签: java android localization quotation-marks


【解决方案1】:

我没有尝试过,但你可以使用Locale.getDefault。您可以为每个具有不同报价的国家/地区创建一个枚举,并在枚举中提供该枚举。然后只需找到与枚举匹配的语言环境并替换为指定语言环境的引号字符即可。

【讨论】:

  • 接受了这个,因为它认识到似乎没有内置的支持,所以必须“手动”完成。相对于实际的实现来说有点模糊,有很多方法可以做到。我发布了另一个答案,其中包含一个我最终使用的简单解决方案。
【解决方案2】:

我建议使用this Stack Overflow answer 在 HTML 中创建文本,该文本具有处理跨区域设置的引号的必要机制。

然后您可以使用this Stack Overflow answer 转换HTML 以显示在TextView 中。

【讨论】:

  • 谢谢 - 好技巧。我做了一个快速测试,将textView.setText(Html.fromHtml("<q>text</q>"));添加到我的代码中,但引号没有显示。谷歌了一下,似乎TextView不支持<q>标签。
  • 另一方面,这可行:setText(Html.fromHtml("«text»"))。但它也需要某种查找表来匹配语言环境和符号。通过setText("\u00abtext\u00bb")可以在没有HTML的情况下实现。
  • 啊,不支持的 q 标签真是令人沮丧。我不知道。我想知道相同的 CSS 是否可以与它支持的另一个 HTML 标签一起使用?也许不吧 。 . . Android 可能实际上也不支持。
【解决方案3】:

我最终使用了以下解决方案:

为了使不同类型的引号与我的应用程序支持的语言环境保持同步,我为开始和结束标记创建了可翻译的字符串资源,例如

<string name="left_quote">\u00ab</string>
<string name="right_quote">\u00bb</string>

用于法语引号,然后将它们添加到我的代码中的字符串中。非常简单且易于维护。

【讨论】:

    猜你喜欢
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2013-09-09
    • 2018-01-14
    相关资源
    最近更新 更多