GEE有很多类型的数据

  • String
  • Number
  • Array
  • List
  • Dictionary
  • Geometry
  • Feature
  • FeatureCollection
  • Image
  • ImageCollection
  • 各种卫星数据

本文主要介绍​​ee.String​

ee.String有以下指令内容

  1. 显示​​print(string)​
  2. 创建​​ee.String()​
  3. 连接​​ee.String.cat()​
  4. 替换​​ee.String.replace()​
  5. 匹配​​ee.String.match()​
  6. 切片​​ee.String.slice()​
  7. 对比​​ee.String.compareTo​​​/​​ee.String.equals​
  8. 链式调用​​ee.String.aside​
  9. 文本位置搜索​​ee.String.index​
  10. 文本长度测量​​ee.String.length()​
  11. 正则表达式分割​​ee.String.split()​
  12. 删除空格和转义字符​​ee.String.trim​
  13. 大小写转换​​ee.String.toUpperCase​​​/​​ee.String.toLowerCase​
  14. 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'));

【GEE笔记7】文本ee.String_javascript

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);

【GEE笔记7】文本ee.String_GEE_02

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"

【GEE笔记7】文本ee.String_大数据_03

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'));

参考:
​​​GEE Reference ee.String​​​​第4节:GEE的数据类型 (String, Number)​