GEE有很多类型的数据
- String
- Number
- Array
- List
- Dictionary
- Geometry
- Feature
- FeatureCollection
- Image
- ImageCollection
- 各种卫星数据
本文主要介绍ee.String
ee.String有以下指令内容
- 显示
print(string)
- 创建
ee.String()
- 连接
ee.String.cat()
- 替换
ee.String.replace()
- 匹配
ee.String.match()
- 切片
ee.String.slice()
- 对比
ee.String.compareTo
/ee.String.equals
- 链式调用
ee.String.aside
- 文本位置搜索
ee.String.index
- 文本长度测量
ee.String.length()
- 正则表达式分割
ee.String.split()
- 删除空格和转义字符
ee.String.trim
- 大小写转换
ee.String.toUpperCase
/ee.String.toLowerCase
- JSON的编码和解码
ee.String.encodeJSON
/ee.String.decodeJSON
1. 显示 print(string)
var string = ee.String('Hellow World !')
print(string)
2. 创建 ee.String()
构造一个新的字符串。
- 用法
ee.String(string)
- 案例
print(ee.String('I am a string')); // I am a string
// Strings can use emoji.
print(ee.String('🧲⚡️👀')); // 🧲⚡️👀
// Empty string.
var empty = ee.String('');
print(empty); // ''
print(empty.length()); // 0
3. 连接 ee.String.cat()
连接两个字符串。
- 用法
String.cat(string2)
- 案例
print(ee.String('cat').cat(' bird')); // 'cat bird'
4. 替换 ee.String.replace()
返回一个替换了模式的部分或全部匹配的新字符串。
- 用法
String.replace(regex, replacement, flags)
- 案例
print(ee.String('abc-abc').replace('abc', 'X')); // X-abc
print(ee.String('abc-abc').replace('abc', 'X', 'g')); // X-X
print(ee.String('abc-abc').replace('abc', '', 'g')); // -
print(ee.String('aBc-Abc').replace('abc', 'Z', 'i')); // Z-Abc
print(ee.String('aBc-Abc').replace('abc', 'Z', 'ig')); // Z-Z
5. 匹配 ee.String.match()
将字符串与正则表达式匹配。返回匹配字符串的列表。
- 用法
String.match(regex, flags) // 正则表达式,标志
- 案例
var s = ee.String('ABCabc123');
print(s.match('')); // ""
print(s.match('ab', 'g')); // ab
print(s.match('ab', 'i')); // AB
print(s.match('AB', 'ig')); // ["AB","ab"]
print(s.match('[a-z]+[0-9]+')); // "abc123"
print(s.match('\\d{2}')); // "12"
// Use [^] to match any character except a digit.
print(s.match('abc[^0-9]', 'i')); // ["ABCa"]
6. 切片 ee.String.slice()
返回给定字符串的子字符串。如果指定的范围超过了字符串的长度,则返回一个较短的子字符串。
如果开始值为负数,那么就倒数。
- 用法
String.slice(start, end) // 开头,结尾
- 案例
print(ee.String('').slice(0)); // '' 全部输出
print(ee.String('').slice(-1)); // '' 全部输出
var s = ee.String('abcdefghijklmnopqrstuvwxyz');
print(s.slice(0)); // abcdefghijklmnopqrstuvwxyz
print(s.slice(24)); // yz
print(s.slice(-3)); // xyz
print(s.slice(3, 3)); // ''
print(s.slice(2, 3)); // c
print(s.slice(-4, 25)); // wxy
7. 对比 ee.String.compareTo
/ee.String.equals
-
比较字符串的大小
ee.String.compareTo
按字典顺序比较两个字符串。返回: 如果两个字符串在字典上相等,则值为 0;如果 string1 小于 string2,则值小于 0;如果 string1 按字典顺序大于 string2,则值大于 0。 -
用法
String.compareTo(string2)
- 案例
print(ee.String('a').compareTo('b')); // -1
print(ee.String('a').compareTo('a')); // 0
print(ee.String('b').compareTo('a')); // 1
print(ee.String('a').compareTo(ee.String('b'))); // -1
-
比较字符串是否相等
ee.String.equals
检查字符串是否与给定对象相等。如果目标是一个字符串并且在字典上等于引用,则返回 true,否则返回 false。 -
用法
String.equals(target)
- 案例
var sp = ee.String('Abies grandis');
print('"Abies grandis" equals "Abies grandis"?', sp.equals('Abies grandis'));
print('"Abies grandis" equals "abies grandis"?', sp.equals('abies grandis'));
print('"Abies grandis" equals "Thuja plicata"?', sp.equals('Thuja plicata'));
8. 链式调用 ee.String.aside
调用一个函数,将此对象作为第一个参数传递,并返回自身。
- 用法
String.aside(func, var_args)
- 案例
// aside with no var_args.
// a
ee.String('a').aside(print);
// foo
// bar
ee.String('foo').aside(print, 'bar');
// foo
// bar
//
// foo
print(ee.String('foo').aside(print, 'bar'));
// aside in the middle of a chain of calls.
// a
// b
//
// ac
print(ee.String('a').aside(print, 'b').cat('c'));
// aside with more than one var_args.
// a
// 1
// 2
ee.String('a').aside(print, 1, 2);
// Print a empty JSON string.
// ''
ee.String('').aside(print);
9. 文本位置搜索 ee.String.index
在字符串中搜索第一次出现的子字符串。返回第一个匹配的索引的位置,或 -1(搜不到)
- 用法
String.index(pattern)
- 案例
print(ee.String('abc123').index('')); // 0
print(ee.String('abc123').index('c1')); // 2
print(ee.String('abc123').index('ZZ')); // -1
print(ee.String('abc123').index('3')); // 5
10. 文本长度测量 ee.String.length()
返回字符串的长度。
数字、字母、汉字、符号均为1个字节。
- 用法
String.length()
- 案例
print(ee.String('').length()); // 0
print(ee.String('abc123').length()); // 6
print(ee.String('紫阳大道').length()); // 4
print(ee.String('紫阳大道99#').length()); // 7
11. 正则表达式分割 ee.String.split()
在正则表达式上拆分字符串,返回字符串列表。
- 用法
String.split(regex, flags) // 正则表达式,标志
- 案例
var s = ee.String('aBAbcD');
print(s.split('Ab')); // ["aB","cD"]
// 'i' tells split to ignore case.
print(s.split('ab', 'i')); // ["","","cD"]
// Split on 'b' or 'c'
print(s.split('[bc]', 'i')); // ["a","A","","D"]
// Split on 'BA' or 'c'
print(s.split('(BA|c)')); // ["a","b","D"]
var s = ee.String('a,b,cdee f,g');
// ["a",",","b",",","c","d","e","e"," ","f",",","g"]
print(s.split(''));
print(s.split(' ')); // ["a,b,cdee","f,g"]
print(s.split('[[:space:]]')); // ["a,b,cdee","f,g"]
print(s.split(',')); // ["a","b","cdee f","g"]
print(s.split('ee')); // ["a,b,cd"," f,g"]
// Split on any lower case letter.
print(s.split('[a-z]')); // ["",",",",","","",""," ",","]
// ^ as the first character in [] excludes.
print(s.split('[^a-z]')); // ["a","b","cdee","f","g"]
// Splitting on characters that are special to split.
var s = ee.String('a.b*c?d');
print(s.split('\\.')); // ["a","b*c?d"]
print(s.split('[*]')); // ["a.b","c?d"]
print(s.split('[?]')); // ["a.b*c","d"]
12. 删除空格和转义字符 ee.String.trim
返回一个字符串,其值为原始字符串,删除了任何前导和尾随空格。
\t \r \n都是转义字符:
\t 是横向跳到下一制表符位置(前进四格)
\r 是回车
\n 是换行。
空格就是单纯的空格。
- 用法
String.trim()
- 案例
var s = ee.String('\t\n\r abc\t\n\r ');
print(s.trim()); // "abc"
var s = ee.String(' a\t\n\r b ');
print(s.trim()); // "a\t\n\r b"
var s = ee.String(' a\t b ');
print(s.trim()); // "a\t b"
var s = ee.String(' a\n b ');
print(s.trim()); // "a\n b"
var s = ee.String(' a\r b ');
print(s.trim()); // "a\r b"
13. 大小写转换 ee.String.toUpperCase
/ee.String.toLowerCase
- 将字符串中的所有字符转换为大写。
ee.String.toUpperCase
- 用法
String.toUpperCase()
- 案例
var s = ee.String('AaBbCc123');
print(s.toUpperCase()); // AABBCC123
var s = ee.String('紫阳大道99#');
print(s.toUpperCase()); // 紫阳大道99#
- 将字符串中的所有字符转换为小写。
ee.String.toLowerCase
- 用法
String.toLowerCase()
- 案例
var s = ee.String('AaBbCc123');
print(s.toLowerCase()); // aabbcc123
14. JSON的编码和解码 ee.String.encodeJSON
/ee.String.decodeJSON
- 将对象编码为 JSON。支持原语、列表和字典。
ee.String.encodeJSON
- 用法
ee.String.encodeJSON(object)
- 案例
print('JSON-encoded ee.String',
ee.String.encodeJSON(ee.String('earth'))); // "\"earth\""
print('JSON-encoded ee.Number',
ee.String.encodeJSON(ee.Number(1))); // "1"
print('JSON-encoded ee.List',
ee.String.encodeJSON(ee.List([1, 2, 3]))); // "[1,2,3]"
print('JSON-encoded ee.Dictionary',
ee.String.encodeJSON(ee.Dictionary({lc_name: 'grassland', lc_class: 3})));
// "{\"lc_class\":3,\"lc_name\":\"grassland\"}"
- 解码 JSON 字符串。
ee.String.decodeJSON
- 用法
String.decodeJSON()
- 案例
var data = ee.Dictionary(ee.String('{"a": "abc", "b": 1}').decodeJSON());
print(data);
print(data.get('a'));