模块 ringo / utils / strings
向 JavaScript String 类型添加有用的方法。
Functions
- Sorter (field, order)
- b16decode (str, encoding)
- b16encode (str, encoding)
- b64decode (string, encoding)
- b64encode (string, encoding)
- capitalize (the, amount)
- compose (one)
- contains (string, substring, fromIndex)
- count (string, pattern)
- digest (string, algorithm)
- endsWith (string, substring)
- entitize (string)
- escapeHtml (string)
- escapeRegExp (str)
- format (format)
- getCommonPrefix (str1, str2)
- group (string, interval, string, ignoreWhiteSpace)
- isAlpha (string)
- isAlphanumeric (string)
- isDate (string, format, locale, timezone, lenient)
- isDateFormat (string)
- isEmail (string)
- isFileName (string)
- isFloat (string)
- isHexColor (string)
- isInt (string)
- isLowerCase (string)
- isNumeric (string)
- isUpperCase (string)
- isUrl (string)
- join (the, the, the)
- pad (string, fill, length, mode)
- random (len, mode)
- repeat (string, num)
- startsWith (string, substring)
- titleize (string, amount)
- toAlphanumeric (string)
- toCamelCase (string)
- toDashes (string)
- toDate (string, format, timezone)
- toFileName (string)
- toHexColor (string)
- toUnderscores (string)
- y64decode (string, encoding)
- y64encode (string, encoding)
Sorter (field, order)
Factory创建用于对数组中的对象进行排序的函数。
Example
var arr = [{ name: "Foo", age: 10 }, {name: "Bar", age: 20 }];
// returns [ { name: 'Bar', age: 20 }, { name: 'Foo', age: 10 } ]
var x = arr.sort(new Sorter("name", 1));
// returns [ { name: 'Foo', age: 10 }, { name: 'Bar', age: 20 } ]
x.sort(new Sorter("name", -1));
Parameters
String | field | name of the field each object is compared with |
Number | order | (ascending or descending) |
Returns
Function | ready for use in Array.prototype.sort |
b16decode (str, encoding)
将 Base16 编码的字符串解码为字符串或字节数组。
Example
strings.b16decode("666F6F"); // --> "foo"
strings.b16decode("666F6F", "raw"); // --> [ByteArray 3]
Parameters
String | str | the Base16 encoded string |
String | encoding | the encoding to use for the return value. Defaults to 'utf8'. Use 'raw' to get a ByteArray instead of a string. |
Returns
String|ByteArray | the decoded string or ByteArray |
b16encode (str, encoding)
将字符串或二进制编码为 Base16 编码的字符串。
Example
strings.b16encode("foo"); // --> "666F6F"
Parameters
String|Binary | str | a string or binary |
String | encoding | optional encoding to use if first argument is a string. Defaults to 'utf8'. |
Returns
String | the Base16 encoded string |
b64decode (string, encoding)
将 Base64 编码的字符串解码为字符串或字节数组。
Example
strings.b64decode("Zm9vYg=="); // --> "foob"
strings.b64decode("Zm9vYg==", "raw"); // --> [ByteArray 4]
Parameters
String | string | the Base64 encoded string |
String | encoding | the encoding to use for the return value. Defaults to 'utf8'. Use 'raw' to get a ByteArray instead of a string. |
Returns
String|ByteArray | the decoded string or ByteArray |
b64encode (string, encoding)
将字符串或二进制编码为Base64编码的字符串。
Example
strings.b64encode("foob"); // --> "Zm9vYg=="
Parameters
String|Binary | string | a string or binary |
String | encoding | optional encoding to use if first argument is a string. Defaults to 'utf8'. |
Returns
String | the Base64 encoded string |
capitalize (the, amount)
将字符串的前 n 个字符转换为大写。
Example
strings.capitalize("example text"); // "Example text"
strings.capitalize("example text", 7); // EXAMPLE text
Parameters
String | the | string to capitalize |
Number | amount | of characters to transform |
Returns
String | the resulting string |
compose (one)
从一堆子串中创建一个字符串。
Example
strings.compose("foo", "bar", "baz"); // --> "foobarbaz"
Parameters
String | one | or more strings as arguments |
Returns
String | the resulting string |
contains (string, substring, fromIndex)
如果 string 包含子字符串,则返回 true。
Example
strings.contains("foobar", "oba"); // --> true
strings.contains("foobar", "baz"); // --> false
strings.contains("foobar", "oo", 1); // --> true
strings.contains("foobar", "oo", 2); // --> false
Parameters
String | string | the string to search in |
String | substring | the string to search for |
Number | fromIndex | optional index to start searching |
Returns
Boolean | true if substring is contained in this string |
count (string, pattern)
返回另一个字符串出现的次数。
Example
strings.count("foobarfoo", "foo"); // --> 2
Parameters
String | string | |
String | pattern |
Returns
Number | occurrences |
digest (string, algorithm)
计算字符串的消息摘要。如果没有参数传递,则使用 MD5 算法。可以请求 java.security.MessageDigest 支持的所有算法。每个 Java 平台都必须提供 MD5,SHA-1 和 SHA-256 的实现。所有已知的流行的 Java 平台实现也将提供 SHA-224,SHA-384 和 SHA-512。
Example
// "C3499C2729730A7F807EFB8676A92DCB6F8A3F8F"
strings.digest("example", "sha-1");
Parameters
String | string | the string to digest |
String | algorithm | the name of the algorithm to use |
Returns
String | base16-encoded message digest of the string |
endsWith (string, substring)
如果字符串以给定子字符串结尾,则返回 true。
Example
strings.endsWith("foobar", "bar"); // --> true
strings.endsWith("foobar", "foo"); // --> false
Parameters
String | string | the string to search in |
String | substring | pattern to search for |
Returns
Boolean | true in case it matches the end of the string, false otherwise |
entitize (string)
将字符串的所有字符转换为 HTML 实体。实体以 Unicode 代码点的十进制形式编码。
Example
strings.entitize("@foo"); // --> "@foo"
Parameters
String | string | the string |
Returns
String | translated result |
escapeHtml (string)
转义字符串以使其在 HTML 文档中安全使用。不安全的字符是 &
, "
, '
,
`
, <
, and >
.
Example
// returns "<a href='foo'>bar</a>"
strings.escapeHtml("<a href='foo'>bar</a>");
Parameters
String | string | the string to escape |
Returns
String | the escaped string |
escapeRegExp (str)
接受一个字符串;返回字符串与正则表达式元字符转义。返回的字符串可以安全地用在正则表达式中以匹配文字字符串。转义字符是 [, ], {, }, (, ), -, *, +, ?, ., , ^, $, |, #, [逗号] 和空格。
Example
// returns "/\.\*foo\+bar/"
strings.escapeRegExp("/.*foo+bar/");
Parameters
String | str | the string to escape |
Returns
String | the escaped string |
format (format)
一个简单的字符串格式器。如果第一个参数是一个包含大量大括号对的格式字符串作为占位符,则将使用相同数量的以下参数来替换格式字符串中的大括号对。如果第一个参数不是一个字符串或不包含任何大括号,则参数将简单地连接到一个字符串并返回。
Example
// "My age is 10!"
strings.format("My {} is {}!", "age", 10);
// My age is 10! 20 30
strings.format("My {} is {}!", "age", 10, 20, 30);
Parameters
String | format | string, followed by a variable number of values |
Returns
String | the formatted string |
getCommonPrefix (str1, str2)
从字符串的开始处获取两个字符串共有的最长公共段。
Example
strings.getCommonPrefix("foobarbaz", "foobazbar"); // --> "fooba"
strings.getCommonPrefix("foobarbaz", "bazbarfoo"); // --> ""
Parameters
String | str1 | a string |
String | str2 | another string |
Returns
String | the longest common segment |
group (string, interval, string, ignoreWhiteSpace)
每个字符插入一个字符串。
Example
// returns "fobaro fobaro fobaro"
strings.group("foo foo foo", 2, "bar");
// returns "fobaro barfobaro barfobarobar"
strings.group("foo foo foo", 2, "bar", true);
Parameters
String | string | |
Number | interval | number of characters after which insertion should take place, defaults to 20 |
String | string | to be inserted |
Boolean | ignoreWhiteSpace | optional, definitely insert at each interval position |
Returns
String | resulting string |
isAlpha (string)
如果字符串只包含字符 a-z 和 A-Z,则返回 true。
Example
strings.isAlpha("foo"); // --> true
strings.isAlpha("foo123"); // --> false
Parameters
String | string | the string |
Returns
Boolean | true in case string is alpha, false otherwise |
isAlphanumeric (string)
如果字符串仅包含 a-z,A-Z 和 0-9(不区分大小写),则返回 true。
Example
strings.isAlphanumeric("foobar123"); // --> true
strings.isAlphanumeric("foo@example"); // --> false
Parameters
String | string | the string |
Returns
Boolean | true in case string is alpha, false otherwise |
isDate (string, format, locale, timezone, lenient)
如果字符串与日期格式匹配,则返回true。默认情况下,解析器将模式与具有宽松解析的字符串相匹配:即使输入不严格地以模式的形式存在,但可以用启发式进行解析,那么解析成功。有关格式模式的详细信息,请参阅 java.text.SimpleDateFormat 如果未提供格式,则检查使用匹配 RFC 3339(互联网上的时间戳)的模式。
Example
// true
strings.isDate("2016");
strings.isDate("01-01-2016", "MM-dd-yyyy");
// true, since lenient parsing
strings.isDate("20-40-2016", "MM-dd-yyyy");
// false, since strict parsing with lenient=false
strings.isDate("20-40-2016", "MM-dd-yyyy", "en", "UTC", false);
Parameters
String | string | |
String | format | (可选)日期格式模式 |
String|java.util.Locale | locale | (可选)区域设置为java 语言环境对象或小写双字母 ISO-639 代码(例如“en”) |
String|java.util.TimeZone | timezone | (可选)时区作为 java TimeZone 对象或诸如“PST”的缩写,诸如 “America / Los_Angeles” 的全名或诸如“GMT-8:00”之类的自定义 ID。 如果没有提供 id,则使用默认时区。 如果提供时区标识但无法理解,则使用 “GMT” 时区。 |
Boolean | lenient | (可选)如果设置为 false,则禁用宽松解析。 |
Returns
Boolean | 如果有效的日期字符串为 true,否则为 false |
isDateFormat (string)
检查日期格式模式是否正确,并检查一个有效的字符串以从中创建新的 java.text.SimpleDateFormat
。
Example
strings.isDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z"); // --> true
strings.isDateFormat(""); // --> true
strings.isDateFormat("PPPP"); // --> false
Parameters
String | string | the string |
Returns
Boolean | true if the pattern is correct, false otherwise |
isEmail (string)
如果字符串看起来像电子邮件,则返回 true。它不执行扩展验证或任何邮箱检查。
Example
strings.isEmail("rhino@ringojs.org"); // --> true
strings.isEmail("rhino@ringojs"); // --> false
Parameters
String | string |
Returns
Boolean | true if the string is an e-mail address |
isFileName (string)
检查传递的字符串是否包含任何在图像或文件名中被禁止的字符。允许的字符是:[a-z] [A-Z] [0-9] -_。和空白空间。
Example
// true
strings.isFileName("foo123.bar");
strings.isFileName("foo bar baz");
strings.isFileName("foo-bar.baz");
strings.isFileName("..baz");
// false
strings.isFileName("../foo");
strings.isFileName("foo/bar/baz");
strings.isFileName("foo-bar+baz");
Parameters
String | string | the string |
Returns
Boolean |
isFloat (string)
如果字符串是浮点文字,则返回 true。
Example
strings.isFloat("0.0"); // --> true
strings.isFloat("10.01234"); // --> true
strings.isFloat("-0.0"); // --> true
strings.isFloat("+10.0"); // --> true
strings.isFloat("foo"); // --> false
strings.isFloat("0"); // --> false
Parameters
String | string |
Returns
Boolean | true if floating point literal, false otherwise |
isHexColor (string)
检查字符串以获取十六进制格式的有效颜色值。它也可能包含#作为第一个字符。
Example
// true
strings.isHexColor("#f0f1f4");
strings.isHexColor("f0f1f4");
strings.isHexColor("#caffee");
// false
strings.isHexColor("#000");
strings.isHexColor("000");
strings.isHexColor("#matcha");
strings.isHexColor("#tea");
Parameters
String | string | the string |
Returns
Boolean | false, if string length (without #) > 6 or < 6 or contains any character which is not a valid hex value |
isInt (string)
如果字符串是整数文字,则返回 true。
Example
strings.isInt("0"); // --> true
strings.isInt("123"); // --> true
strings.isInt("+123"); // --> true
strings.isInt("-123"); // --> true
strings.isInt("0123"); // --> false
strings.isInt("bar"); // --> false
Parameters
String | string |
Returns
Boolean | true if integer literal, false otherwise |
isLowerCase (string)
如果字符串是小写,则返回 true。
Example
strings.isLowerCase("foo"); // --> true
strings.isLowerCase("Foo"); // --> false
Parameters
String | string |
Returns
Boolean | true if lowercase, false otherwise |
isNumeric (string)
如果字符串只包含 0-9,则返回 true。
Example
strings.isNumeric("12345"); // --> true
strings.isNumeric("00012345"); // --> true
strings.isAlpha("foo123"); // --> false
Parameters
String | string | the string |
Returns
Boolean | true in case string is numeric, false otherwise |
isUpperCase (string)
如果字符串是大写,则返回 true。
Example
strings.isUpperCase("FOO"); // --> true
strings.isUpperCase("FOo"); // --> false
Parameters
String | string |
Returns
Boolean | true if uppercase, false otherwise |
isUrl (string)
检查字符串是否是有效的 URL。只有 HTTP,HTTPS 和 FTP 是允许的协议。 TLD 是强制性的,所以像 localhost 这样的主机名称会失败。 1.0.0.0 - 223.255.255.255 是有效的 IP 范围。但是,具有广播级别的 IP 地址被视为无效。
Example
// true
strings.isUrl("http://example.com");
strings.isUrl("https://example.com");
strings.isUrl("ftp://foo@bar.com");
strings.isUrl("http://example.com/q?exp=a|b");
// false
strings.isUrl("http://localhost");
strings.isUrl("ftp://foo");
strings.isUrl("//example.com");
strings.isUrl("http://10.1.1.255");
Parameters
String | string | the string |
Returns
Boolean | true if the string is a valid URL |
join (the, the, the)
将一个字符串附加到另一个字符串上,如果没有字符串为空或空,则添加一些“glue”。
Example
strings.join("foo", "bar"); // "foobar"
strings.join("foo", "bar", "-"); // "foo-bar"
strings.join("foo", "", "-"); // "foo"
Parameters
String | the | first string |
String | the | string to be appended onto the first one |
String | the | "glue" to be inserted between both strings |
Returns
String | the resulting string |
pad (string, fill, length, mode)
用另一个字符串填充字符串至所需长度。
Example
// "hellowo"
strings.pad("hello", "world", 7);
// "wohello"
strings.pad("hello", "world", 7, -1);
// "whellow"
strings.pad("hello", "world", 7, 0);
// "helloworldworldworld"
strings.pad("hello", "world", 20);
// "worldwohelloworldwor"
strings.pad("hello", "world", 20, 0);
Parameters
String | string | the string |
String | fill | the filling string |
Number | length | the desired length of the resulting string |
Number | mode | the direction which the string will be padded in: a negative number means left, 0 means both, a positive number means right |
Returns
String | the resulting string |
random (len, mode)
创建一个随机字符串(数字和字符)。
Example
strings.random(10); // --> "wcn1v5h0tg"
strings.random(10, 1); // --> "bqpfj36tn4"
strings.random(10, 2); // --> 5492950742
Parameters
Number | len | length of key |
Number | mode | determines which letters to use. null or 0 = all letters; 1 = skip 0, 1, l and o which can easily be mixed with numbers; 2 = use numbers only |
Returns
String | random string |
repeat (string, num)
重复多次传递作为参数的字符串。
Example
strings.repeat("foo", 3); // --> "foofoofoo"
Parameters
String | string | the string |
Number | num | amount of repetitions |
Returns
String | resulting string |
startsWith (string, substring)
如果字符串以给定子字符串开头,则返回 true。
Example
strings.startsWith("foobar", "foo"); // --> true
strings.startsWith("foobar", "bar"); // --> false
Parameters
String | string | the string to search in |
String | substring | pattern to search for |
Returns
Boolean | true in case it matches the beginning of the string, false otherwise |
titleize (string, amount)
将字符串中每个单词的前 n 个字符转换为大写。
Example
strings.titleize("the bar is foo"); // --> "The Bar Is Foo"
strings.titleize("the bar is foo", 2); // --> "THe BAr IS FOo"
strings.titleize("the bar is foo", 3); // --> "THE BAR IS FOO"
Parameters
String | string | the string |
Number | amount | optional number of characters to transform |
Returns
String | the resulting string |
toAlphanumeric (string)
通过丢弃所有非字母数字字符来清理字符串。
Example
// returns "dogdogecom"
strings.toAlphanumeric("dog@doge.com");
Parameters
String | string | the string |
Returns
String | cleaned string |
toCamelCase (string)
将字符串从空格,短划线或下划线表示法转换为驼峰式。
Example
strings.toCamelCase("TheDogJumps"); // "TheDogJumps"
strings.toCamelCase("the-dog_jumps"); // "theDogJumps"
strings.toCamelCase("FOObarBaz"); // "FoobarBaz"
Parameters
String | string | a string |
Returns
String | the resulting string |
toDashes (string)
将字符串从驼峰转换为短划线。
Example
strings.toDashes("FooBarBaz"); // "-foo-bar-baz"
strings.toDashes("fooBARBaz"); // "foo-b-a-r-baz"
strings.toDashes("foo-Bar-Baz"); // "foo--bar--baz"
Parameters
String | string | a string |
Returns
String | the resulting string |
toDate (string, format, timezone)
将时间戳解析到 Date 对象中。
Example
// Thu Dec 24 2015 00:00:00 GMT+0100 (MEZ)
strings.toDate("24-12-2015", "dd-MM-yyyy");
// Thu Dec 24 2015 09:00:00 GMT+0100 (MEZ)
var tz = java.util.TimeZone.getTimeZone("America/Los_Angeles");
strings.toDate("24-12-2015", "dd-MM-yyyy", tz);
Parameters
String | string | the string |
String | format | date format to be applied |
java.util.TimeZone | timezone | Java TimeZone Object (optional) |
Returns
Date | the resulting date |
toFileName (string)
清除作为参数传递的字符串,这些字符是禁止使用的或不应在文件名中使用的字符。
Example
// returns "..foobarbaz"
strings.toFileName("../foo/bar+baz");
Parameters
String | string | the string |
Returns
String | the sanitized string |
toHexColor (string)
不推荐使用!
该功能不可靠,并且是Helma的字符串模块的补充。
将字符串转换为十六进制颜色表示(例如 “ffcc33”)。也知道如何转换颜色字符串,如 “rgb(255,204,51)”。
Example
strings.toHexColor("rgb(255, 204, 51)"); // --> ffcc33
strings.toHexColor("rgb (255, 204, 51)"); // --> ffcc33
strings.toHexColor("rgba(255, 204, 51)"); // --> ffcc33
Parameters
String | string | the string |
Returns
String | the resulting hex color (w/o "#") |
toUnderscores (string)
将字符串从驼峰转换为下划线表示法。
Example
strings.toUnderscores("FooBarBaz"); // "_foo_bar_baz"
strings.toUnderscores("fooBARBaz"); // "foo_b_a_r_baz"
strings.toUnderscores("foo_Bar_Baz"); // "foo__bar__baz"
strings.toUnderscores("foo-Bar-Baz"); // foo-_bar-_baz
Parameters
String | string | a string |
Returns
String | the resulting string |
y64decode (string, encoding)
将 Y64 编码的字符串解码为字符串或字节数组。
Example
strings.y64decode("Zm9vYg--"); // --> "foob"
strings.y64decode("Zm9vYg--", "raw"); // --> [ByteArray 4]
Parameters
String | string | the Y64 encoded string |
String | encoding | the encoding to use for the return value. Defaults to 'utf8'. Use 'raw' to get a ByteArray instead of a string. |
Returns
String|ByteArray | the decoded string or ByteArray |
y64encode (string, encoding)
将字符串或二进制编码为 Y64 编码的字符串。 Y64 是一种 URL 安全的 Base64 编码,可防止任何URL转义。它用点(。),下划线(_)和短划线( - )替换加号(+),斜线(/)和等号(=)。
Example
strings.y64encode("foob"); // --> "Zm9vYg--"
Parameters
String|Binary | string | a string or binary |
String | encoding | optional encoding to use if first argument is a string. Defaults to 'utf8'. |
Returns
String | the Y64 encoded string |