相关疑难解决方法(0)

为什么在Rust中将字符串的第一个字母大写如此复杂?

我想把a的第一个字母大写&str.这是一个简单的问题,我希望有一个简单的解决方案.直觉告诉我做这样的事情:

let mut s = "foobar";
s[0] = s[0].to_uppercase();
Run Code Online (Sandbox Code Playgroud)

但是&strs不能像这样编入索引.我能够做到这一点的唯一方法似乎过于复杂.我将转换&str为迭代器,将迭代器转换为向量,大写为向量中的第一项,它创建了一个迭代器,我将其编入索引,创建一个Option,我打开它给我一个上面的首字母.然后我将矢量转换为迭代器,我将其转换为a String,我将其转换为a &str.

let s1 = "foobar";
let mut v: Vec<char> = s1.chars().collect();
v[0] = v[0].to_uppercase().nth(0).unwrap();
let s2: String = v.into_iter().collect();
let s3 = &s2;
Run Code Online (Sandbox Code Playgroud)

有没有比这更简单的方法,如果有,那又怎样?如果没有,为什么Rust以这种方式设计?

类似的问题

string rust uppercase

58
推荐指数
5
解决办法
5478
查看次数

Java中的Unicode纠正标题案例

我一直在浏览所有StackOverflow中有关Java资本化问题的大量问题,而且他们似乎都不关心国际化,事实上似乎没有一个在国际背景下工作.所以这是我的问题.

我在Java中有一个String,它代表一个单词 - 所有isLetter()字符,没有空格.我想让第一个字符大写,其余小写.我确实有我的单词的语言环境.

为字符串的最后一部分调用.substring(1).toLowerCase(Locale)很容易.但我不知道如何获得正确的第一个角色.

我遇到的第一个问题是荷兰语,其中"ij"作为有向图应该一起大写.我可以手工处理这个问题,因为我了解它; 现在可能还有其他语言有这种我不知道的东西,我相信Unicode会告诉我,如果我问得好.但我不知道该怎么问.

即使上面的问题得到解决,我仍然没有办法处理英语,土耳其语和希腊语,因为Character支持titlecase但没有语言环境,而String支持语言环境但不支持标题.

如果我接受代码点,并将其传递给Character.toTitleCase(),则会失败,因为无法将语言环境传递给此方法.因此,如果系统区域设置是英语但是单词是土耳其语,并且单词的第一个字符是"i",我将得到"I"而不是"İ",这是错误的.现在,如果我使用子字符串并使用.toUpperCase(Locale),这将失败,因为它是高位而不是标题大小写.因此,如果这个词是希腊语,我仍然会得到错误的字符.

如果有人有有用的指示,我会很高兴听到他们.

java string unicode

30
推荐指数
2
解决办法
2375
查看次数

假设Unicode和不区分大小写,模式".."是否匹配"FfIsS"?

这听起来像个笑话,但我可以证明这一点.

假设:

  • Dot匹配任何单个字符.
  • 不区分大小写的模式匹配s且仅当它匹配时才匹配s.toUpperCase().

以下所有内容都非常符合逻辑并且在Java中保留:

  • "?".matches(".") LATIN SMALL LIGATURE FFI(U + FB03)是一个字符,因此它必须匹配
  • "ß".matches(".") LATIN SMALL LETTER SHARP S(U + 00DF)是一个字符,因此它必须匹配
  • "?".toUpperCase().equals("FFI") 按Unicode标准(没有资本连字FFI)
  • "ß".toUpperCase().equals("SS") 按照Unicode标准(有一个大写的S,但它没有被使用)
  • "FfI".toUpperCase().equals("FFI") 明显
  • "sS".toUpperCase.equals("SS") 明显

因此,假设正则表达式中的第一个点代表?第二个点,则正则ß表达式必须匹配"FFISS",并且因为不区分大小写也是"FfIsS".

真的希望有一些错误,否则正则表达式会变得非常不可用.

问题:

  • 我的"证明"有什么问题?
  • 如果我的第二个假设不成立,那么"不区分大小写"究竟意味着什么?

java regex unicode case-insensitive case-folding

17
推荐指数
1
解决办法
1213
查看次数

Javascript的toUpperCase()语言是否安全?

Javascript的String原型方法toUpperCase()是否会在每个支持UTF-8的语言/字符集中提供自然预期的结果?

我已经尝试过简体中文,韩文,泰米尔语,日语和西里尔语,到目前为止结果似乎合理.我可以依赖语言安全的方法吗?

例:

  "???????????????????????????????????????????????".toUpperCase()
> "???????????????????????????????????????????????"
Run Code Online (Sandbox Code Playgroud)

编辑:正如@Quentin指出的,还有一个String.prototype.toLocaleUpperCase()甚至可能"更安全"使用,但我还必须支持IE 8及更高版本,以及基于Webkit的浏览器.由于它是ECMAScript 3 Standard的一部分,它应该可以在所有这些浏览器上使用,对吧?

有谁知道使用它会产生自然意外结果的任何情况?

javascript string

5
推荐指数
1
解决办法
1613
查看次数