脚本开发

模块 ringo / utils / strings

向 JavaScript String 类型添加有用的方法。

Functions


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 "&lt;a href=&#39;foo&#39;&gt;bar&lt;/a&gt;"
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