如何使用TypeScript的强大功能检查字符串中的字母是否为大写?

时间:2017-04-03 07:22:40

标签: c# typescript character uppercase

我的问题非常简短。我是TypeScript的新手,一直在这里和那里搜索,但没有找到答案。

我有用C#编写的代码

if (c[0] == c[0].toUpperCase())

当我将上面的代码转换为Type脚本时,我只需编写类似subscribe

的代码

我只需要知道Typescript中是否有内置方法来检查给定字符是否为大写。我在互联网上找不到这样的东西,但我对此表示怀疑。

请指教。

3 个答案:

答案 0 :(得分:1)

没有。 JavaScript(这是TypeScript编译的)没有类似于char.IsUpper/char.IsLower的内置方法。你必须比较它:

c[0] === c[0].toUpperCase() // c[0] is uppercase
c[0] === c[0].toLowerCase() // c[0] is lowercase

答案 1 :(得分:0)

是的。你可以尝试使用linq

if (yourString.Any(char.IsUpper) &&
    yourString.Any(char.IsLower))

答案 2 :(得分:0)

扩展@Saravana的答案,TypeScript的类型检查在运行时不存在,而是在编辑/传输时进行的检查。这意味着不能仅根据变量的类型或内容自动引发异常。缺少功能会导致错误,但是仅当您使用的是目标变量类型专有的功能(该功能没有专门用于大写/小写的字符串)时,该功能才有效。

选项?好吧,如果您知道要处理一组特定的可能字符串,则可以设置一个type

type UCDBOperation = "INSERT" | "DELETE";
type LCDBOperation = "insert" | "delete";

function DoDBOperation(operation: UCDBOperation): void { ... }

const someUCOperation: UCDBOperation = ...;
const someLCOperation: LCDBOperation = ...;

DoDBOperation("INSERT");        // no error!
DoDBOperation(someUCOperation); // no error!
DoDBOperation("insert");        // type error
DoDBOperation(someLCOperation); // type error
DoDBOperation("fakeoperation"); // type error
DoDBOperation("FAKEOPERATION"); // type error

如果您只关心单个字母字符,则可以更进一步:

type UCAlpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z";

function printUpperCaseLetter(letter: UCAlpha): void {
  console.log(letter);
}

printUpperCaseLetter("A");     // no error!
printUpperCaseLetter("a");     // type error
printUpperCaseLetter("hello"); // type error
printUpperCaseLetter("WORLD"); // type error

请小心用户生成的字符串。在运行时生成的任何数据都不会对此类型进行检查:

// Typescript has no idea what the content
// of #SomeTextField is since that data
// wasn't available at transpile-time
DoDBOperation(document.querySelector("#SomeTextField").textContent);