首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“较低”不适用于包含外来字符的字符串。

“较低”不适用于包含外来字符的字符串。
EN

Stack Overflow用户
提问于 2018-05-30 07:44:23
回答 2查看 85关注 0票数 0

我有一个代码部分,它检查字符串是否都是小写的。如果是的话,它给我的第一个和最后一个字符作为缩写。如果不是,它给我大写部分作为缩写。

代码语言:javascript
复制
if Hotstring is lower
    {
    ShortString := SubStr(Hotstring,1,1) . SubStr(Hotstring,0)
    }else{
    ShortString := RegExReplace(Hotstring, "[a-záéiíóöőúüű ]", "")
    StringLower,ShortString, ShortString
    }   

问题:如果输入字符串包含中欧字符,则该字符串不能正确识别为小写。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-30 12:18:28

  1. 脱离遗留语法(在AutoHotkey v2中已经被淘汰),几乎总是提供更好的解决方案。
  2. 阅读有关POSIX命名集、这里的文章。

对下列各项进行了测试才能发挥作用:

代码语言:javascript
复制
If RegExMatch(Hotstring, "(*UCP)^[[:lower:] ]+$")   
    ; or just "(*UCP)^[[:lower:]]+$" if you want to stick with the exact definition of the "lower" type
    ShortString := SubStr(Hotstring, 1, 1) SubStr(Hotstring, 0)
Else
    ShortString := Format("{:L}", RegExReplace(Hotstring, "(*UCP)[[:lower:] ]+"))

一种功能相同、但更简洁的备选方案:

代码语言:javascript
复制
ShortString := Hotstring ~= "(*UCP)^[\p{Ll} ]+$" 
               ? SubStr(Hotstring, 1, 1) SubStr(Hotstring, 0)
               : Format("{:L}", RegExReplace(Hotstring, "(*UCP)[\p{Ll} ]+"))
票数 2
EN

Stack Overflow用户

发布于 2018-05-30 08:18:51

我已经为自己创建了解决方案,它首先将特殊的字母转换为一个简单的lcap字母--只为了查看完整的字符串是否为lcap。

检查之后,我继续使用原始字符串,而不是转换的字符串。

testString := RegExReplace(Hotstring,“áéióóőúű”,"a")

代码语言:javascript
复制
testString := RegExReplace(Hotstring, "[áéiíóöőúüű]", "a")
        if testString is lower
        {
        ShortString := SubStr(Hotstring,1,1) . SubStr(Hotstring,0)
        }else{
        ShortString := RegExReplace(Hotstring, "[a-záéiíóöőúüű ]", "")
        StringLower,ShortString, ShortString
        }

如果你们中的一些人知道一个简单的开关/选项,允许适当的内置识别这些字符为高/低,请张贴它。

在那之前,用我的方法。

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

https://stackoverflow.com/questions/50599044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档